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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|