Metadata-Version: 2.1
Name: autocron
Version: 0.9.5
Summary: Asynchronous background tasks for Python web-frameworks with no dependencies
Home-page: https://github.com/kbr/autocron
Author: Klaus Bremer
Author-email: bremer@bremer-media.com
License: MIT
Project-URL: Homepage, https://github.com/kbr/autocron
Project-URL: Code, https://github.com/kbr/autocron
Project-URL: Issue tracker, https://github.com/kbr/autocron/issues
Keywords: tasks,background,python
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown

# autocron

![](https://img.shields.io/pypi/pyversions/autocron.svg)
![](https://img.shields.io/pypi/l/autocron.svg)


**autocron** is a Python background task library with no dependencies beside the standard library. It works out of the box with webframeworks like django, pyramid, flask, bottle, tornado or starlette.

**autocron** makes it easy to delegate long running and recurring tasks to external processes. No hassle with configuration-files.

**autocron** is designed for the vast majority of webapplications that don't need massive scaling. And don't want to add unnecessary dependencies.


## Installation

For installation use pip:

```
    $ pip install autocron
```

## Quickstart

autocron provides two decorators: ``cron`` that takes a string in [cron](https://en.wikipedia.org/wiki/Cron#CRON_expression)-format as argument, but accepts also keyword-arguments like *minutes* and *hours*. And ``delay`` to delegate a long running task to a background process.

Here is a simple example how to use autocron with the flask web-framework that can be run with ``$ flak --app application run``:

```
    # application.py

    import autocron
    from flask import Flask

    app = Flask(__name__)
    autocron.start("the_flask_app.db")

    @autocron.cron("* * * * *")
    def cronjob():
        # do something from time to time ...

    @autocron.delay
    def do_this_later():
        # time consuming task here ...

    @app.route("/later")
    def later():
        do_this_later()
        return "delayed action triggered"
```

After creating the flask ``app`` instance calling ``autocron.start(<databasename>)`` starts the background workers. The ``cron`` decorated ``cronjob()`` function will get executed every minute and the ``delay`` decorated ``do_this_later()`` function gets delegated to the background worker every time the application processes the ``/later`` url. Terminating the application will shut down the worker processes.

More information and examples how to use autocron with other frameworks are at the documentation.


## Documentation

The full documentation and release notes are at [https://autocron.readthedocs.org](https://autocron.readthedocs.org)


