A reliable distributed cron with pluggable storage backends
Project description
A reliable distributed cron with pluggable storage backends
Free software: MIT license
Installation
pip install pyncette[redis]
You can also install the in-development version with:
pip install https://github.com/tibordp/pyncette/archive/master.zip
Documentation
Usage example
Simple in-memory cron (does not persist state)
from pyncette import Pyncette, Context
app = Pyncette()
@app.task(schedule='* * * * *')
async def foo(context: Context):
print('This will run every minute')
if __name__ == '__main__':
app.main()
Persistent distributed cron using Redis (coordinates execution with parallel instances and survives restarts)
from pyncette import Pyncette, Context
from pyncette.redis import redis_repository
app = Pyncette(repository_factory=redis_repository, redis_url='redis://localhost')
@app.task(schedule='* * * * * */10')
async def foo(context: Context):
print('This will run every 10 seconds')
if __name__ == '__main__':
app.main()
Development
To run the all tests run:
tox
To run just the unit tests (excluding integration tests):
tox -e py37 # or py38
Note, to combine the coverage data from all the tox environments run:
Windows |
set PYTEST_ADDOPTS=--cov-append tox |
---|---|
Other |
PYTEST_ADDOPTS=--cov-append tox |
Changelog
0.5.0 (2020-03-27)
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.
0.4.0 (2020-02-16)
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
0.2.0 (2020-01-08)
Timezone support
More efficient poling when Redis backend is used
0.1.1 (2020-01-08)
First release that actually works.
0.0.0 (2019-12-31)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyncette-0.5.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5641a2c12cd22f143008e345500991a175be19b71a18422d82b0d2a0f0dc00bd |
|
MD5 | 3e7c12ae89bc35ecffce7fff75ac9553 |
|
BLAKE2b-256 | ea43a4dbdf57679708251e3c4005aacc59e1bbe10146c72ff727339a7f14700e |