- Add support for Python 3.12 and 3.13
- Include missing lua files in the built wheel
- Drop support for Python 3.7
- Add support for Python 3.11
- Modernize Python package structure and linters
- Fix a few bugs and type annotations
- Improve performance for calculation of the next execution time
- Add ability for repositories to pass a pagination token
- Add add_to_context() to inject static data to context
- Clean up documentation and add additional examples
- Added Amazon DynamoDB backend
- Added MySQL backend
- Added support for partitioned dynamic tasks
- Added support for automatic and cooperative lease heartbeating
- PostgreSQL backend can now skip automatic table creation
- Improved signal handling
- CI: Add Codecov integration
- Devenv: Run integration tests in Docker Compose
- Optimize the task querying on Postgres backend
- Fix: ensure that there are no name colissions between concrete instances of different dynamic tasks
- Improve fairness of polling tasks under high contention.
- Added PostgreSQL backend
- Added Sqlite backend and made it the default (replacing InMemoryRepository)
- Refactored test suite to cover all conformance/integration tests on all backends
- Refactored Redis backend, simplifying the Lua scripts and improving exceptional case handling (e.g. tasks disappearing between query and poll)
- Main loop only sleeps for the rest of remaining poll_interval before next tick instead of the full amount
- General bug fixes, documentation changes, clean up
- Fixes bug where a locked dynamic task could be executed again on next tick.
- poll_task is now reentrant with regards to locking. If the lease passed in matches the lease on the task, it behaves as though it were unlocked.
- Middleware support and optional metrics via Prometheus
- Improved the graceful shutdown behavior
- Task instance and application context are now available in the task context
- Breaking change: dynamic task parameters are now accessed via context.args['name'] instead of context.name
- Improved examples, documentation and packaging
- Timezone support
- More efficient poling when Redis backend is used
- First release that actually works.
- First release on PyPI.