Simple Flask scheduled tasks without extra daemons
Project description
flask-crontab
Simple Flask scheduled tasks without extra daemons
This project is strongly inspired by django-crontab, and only works on Python 3.5+. Due to the coming EOL of Python 2 on 2020/01/01, there is no plan for Python 2 support.
Quick Start
Install via pip
:
$ pip install flask-crontab
Instantiate the extension in your app.py
after the creation of Flask app:
from flask import Flask
from flask_crontab import Crontab
app = Flask(__name__)
crontab = Crontab(app)
If you are using App Factory pattern, you can also register the extension later:
crontab = Crontab()
def create_app():
...
crontab.init_app(app)
Now create a scheduled job:
@crontab.job(minute="0", hour="6")
def my_scheduled_job():
do_something()
An app context is automatically activated for every job run, so that you can access objects that are attached to app context. Then add the job to crontab:
$ flask crontab add
That's it! If you type in crontab -l
in your shell, you can see some new lines created by flask-crontab
.
Show jobs managed by current app:
$ flask crontab show
Purge all jobs managed by current app:
$ flask crontab remove
Run a specific job given by hash:
$ flask crontab run <job_hash>
See supported options via --help
for every commands.
Decorator API
def job(
minute: str = "*",
hour: str = "*",
day: str = "*",
month: str = "*",
day_of_week: str = "*",
args: Tuple[Any, ...] = (),
kwargs: Optional[Dict[str, Any]] = None,
) -> Callable:
The decorator accepts five arguments minute
, hour
, day
, month
, day_of_month
, which are the same as crontab 5-parts time format. Any part that is not given defaults to *
.
Besides, job
decorator accepts args
and kwargs
which will be passed to the decorated function as positional arguments and keywords arguments, respectively.
Configuration
Config item | Description | Default value |
---|---|---|
CRONTAB_EXECUTABLE | The absolute path of crontab |
/usr/bin/crontab |
CRONTAB_LOCK_JOBS | Whether lock jobs when running | False |
License
This project is publised under MIT license.
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 flask_crontab-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 496d0c8625ce4721fae8a7b09b22f1127b291a6de48b4f70b0a97fd92d5e6b15 |
|
MD5 | ec09f0bc3a4311799771b41c0b8c0c23 |
|
BLAKE2b-256 | f0036d494c293c23236e17612a66465034b1917a2f048e94e9d9957fffb7fa50 |