如何在Django中开启一个定时任务

2019-06-13  本文已影响0人  越大大雨天

首先,这里介绍使用的是最原始的crontab开启定时任务,也可使用Celery和APScheduler。

定时任务使用的场景很多,以定时生成静态首页为例。
1. 安装支持包:django-crontab
安装方式:pip install django-crontab

2. 注册定时应用
在settings.INSTALLED_APPS中添加应用:

INSTALLED_APPS = [    
    'django_crontab', # 定时任务
]

3. 定时任务crontab的时间设置格式

定时时间基本格式 :
5个'*'符号:* * * * * 命令
依次对应:分 时 日 月 周
M: 分钟(0-59)。每分钟用 * 或者 */1 表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。

示例:

* /1* * * * myCommand

3,15 * * * * myCommand

3,15 8-11 * * * myCommand

3,15 8-11 */2 * * myCommand

3,15 8-11 * * 1 myCommand

4. 设置定时任务
在settings中添加CRONJOBS,设置定时任务。

CRONJOBS = [
    # 每1分钟生成一次首页静态文件
    ('*/1 * * * *', 'contents.crons.generate_static_index_html', '>> ' + os.path.join(os.path.dirname(BASE_DIR), 'logs/crontab.log'))
]

5. 设置中文支持
在定时任务中,如果出现非英文字符,会出现字符异常错误

CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

6. 管理定时任务

$ python manage.py crontab add

$ python manage.py crontab show

$ python manage.py crontab remove

上一篇下一篇

猜你喜欢

热点阅读