Skip to main content

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

https://pyncette.readthedocs.io

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.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyncette-0.4.0.tar.gz (32.0 kB view hashes)

Uploaded Source

Built Distribution

pyncette-0.4.0-py2.py3-none-any.whl (17.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page