django-crontab

django-crontab 定时任务

问题汇总:

1、定时任务未执行
可能原因:

  • 任务未添加
# 添加任务
python manage.py crontab add
# 显示正在执行的任务
python manage.py crontab show
  • 执行任务出错
    执行任务出错记录会发送到 mail, 可通过再次执行命令如 python manage.py crontab add,会给你提示 mail 及文件位置,打开文件查看出错原因。

  • 中文设置无效
    任务中有中文字符,去掉中文代码即可。将语言设置为中文,可能会失败。默认语言为LATIN1, 因无法解码中文字符而中断任务,导致任务未执行的假象。可通过上一个方法查看出错信息。

基本用法

# 1.安装依赖包:
pip install django-crontab

# 2.添加配置到INSTALL_APPS中:
INSTALLED_APPS = ['django_crontab']

# 3.配置文件添加每分钟执行一次,并且输出到日志test_crontab.log
CRONJOBS =[('*/1 * * * *', 'app.views.method','>>/crontab.log')]
# app.views.method:执行定时任务的逻辑
#  crontab 语言设置
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

# 在命令行运行以下命令:
# 4.将所有已定义的定时任务从CRONJOBS添加到crontab:
python manage.py crontab add

# 5.显示该项目当前的定时任务
python manage.py crontab show

# 6.删除该项目当前的定时任务
python manage.py crontab remove

用法说明

定时任务名: CRONJOBS
结构: 列表: []
元素: 元组: (), 每个元组包含一个任务
内容: 时间、任务函数、参数、日志文件

时间格式说明:

    *  *  *  *  *
    分 时 日 月 周
    M: 分(0-59)。每分钟用*或者 */1表示
    H:小(0-23)。(0表示0/24点)
    D:天(1-31)。
    m: 月(1-12)。
    d: 周(0~6,0为星期天)。
    例如:
    '0 1 * * *'  每天 1:00执行一次
    '*/5 * * * *' 每5分钟执行一次

任务方法

指定任务的格式如下,不能用路径,所以任务最好写在模块或包里。
'app.views.method'

参数

两种参数用逗号隔开

# 位置参数
[arg1, arg2]
# 关键字参数
{key1=value1, key2=value2}

日志

日志文件的位置使用路径指定
'> 路径字符串'

范例

CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.my_scheduled_job'),

    # format 1
    ('0   0 1 * *', 'myapp.cron.my_scheduled_job', '>> /tmp/scheduled_job.log'),

    # format 2
    ('0   0 1 * *', 'myapp.cron.other_scheduled_job', ['myapp']),
    ('0   0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),
]
posted @ 2021-09-23 18:25  流水自净  阅读(636)  评论(0编辑  收藏  举报