跳转到主要内容

无需额外守护进程的简单Flask定时任务

项目描述

flask-crontab

无需额外守护进程的简单Flask定时任务

PyPI PyPI - Python Version Github Action Supported Platforms

本项目深受 django-crontab 启发,仅在Python 3.5+上运行。由于Python 2将在2020/01/01停止支持,因此没有计划支持Python 2。

快速入门

通过pip安装

$ pip install flask-crontab

在创建Flask应用之后,在您的app.py中实例化该扩展

from flask import Flask
from flask_crontab import Crontab

app = Flask(__name__)
crontab = Crontab(app)

如果您正在使用App Factory模式,您也可以稍后注册该扩展

crontab = Crontab()

def create_app():
    ...
    crontab.init_app(app)

现在创建一个定时任务

@crontab.job(minute="0", hour="6")
def my_scheduled_job():
    do_something()

每个任务运行时都会自动激活应用上下文,因此您可以访问附加到应用上下文的对象。然后将其添加到crontab

$ flask crontab add

就这样!如果您在shell中输入crontab -l,您将看到由flask-crontab创建的一些新行。

显示当前应用管理的任务

$ flask crontab show

清除当前应用管理的所有任务

$ flask crontab remove

运行给定哈希的特定任务

$ flask crontab run <job_hash>

通过--help查看每个命令的支持选项。

装饰器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:

该装饰器接受五个参数minutehourdaymonthday_of_month,它们与crontab 5部分时间格式相同。任何未提供部分的默认值均为*。此外,job装饰器接受argskwargs,它们将分别作为位置参数和关键字参数传递给装饰的函数。

配置

配置项 描述 默认值
CRONTAB_EXECUTABLE crontab的绝对路径 /usr/bin/crontab
CRONTAB_LOCK_JOBS 运行时是否锁定任务 False

许可证

本项目采用MIT许可证发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

flask-crontab-0.1.2.tar.gz (6.8 kB 查看哈希值)

上传时间 源代码

构建发行版

flask_crontab-0.1.2-py2.py3-none-any.whl (6.9 kB 查看哈希值)

上传时间 Python 2 Python 3