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.
Metadata
Release files for flask-crontab 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flask-crontab-0.1.2.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flask_crontab-0.1.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 13.7 kB
Release files / flask-crontab-0.1.2.tar.gz
| Download URL | flask-crontab-0.1.2.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec38074d7b5237df31b406576e9ccc79c924d8363dcba4e857830c4ec63a1185
|
|
BLAKE2b-256 checksum How to use checksums |
a38dbb417566d4890769fc5c1dd6d7ffd2e2d6cfa65b9005060661714e76ccc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / flask_crontab-0.1.2-py2.py3-none-any.whl
| Download URL | flask_crontab-0.1.2-py2.py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
8dbb325417d9c04d13c94f1f933c97267e0ef7a4358e08057dbb9910f0145188
|
|
BLAKE2b-256 checksum How to use checksums |
7ab53d691df17797770ab531f8fd43b8ac99c40b8163baae1aa7bc7701bcc6d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|