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
File details
Details for the file flask-crontab-0.1.2.tar.gz
.
File metadata
- Download URL: flask-crontab-0.1.2.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec38074d7b5237df31b406576e9ccc79c924d8363dcba4e857830c4ec63a1185 |
|
MD5 | bf106443c3908edd1aa9cd132a4b3052 |
|
BLAKE2b-256 | a38dbb417566d4890769fc5c1dd6d7ffd2e2d6cfa65b9005060661714e76ccc1 |
File details
Details for the file flask_crontab-0.1.2-py2.py3-none-any.whl
.
File metadata
- Download URL: flask_crontab-0.1.2-py2.py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dbb325417d9c04d13c94f1f933c97267e0ef7a4358e08057dbb9910f0145188 |
|
MD5 | 5ba0d16628143ed1c80f92d4a3cc3088 |
|
BLAKE2b-256 | 7ab53d691df17797770ab531f8fd43b8ac99c40b8163baae1aa7bc7701bcc6d6 |