Django定时任务-基于crontab的简单版

需求场景

web应用中常常会有定时处理某项任务的需求,flask框架比较灵活,简单的需求中可以低耦合的使用APScheduler,复杂的需求也很容易集成进celery。但是在django中,定制起来就比较麻烦,django现有较为成熟的定时任务组建django-crontab和django-celery。前者基于crontab,后者基于celery。
先说说较为简单的crontab。

安装django-crontab

pip install django-crontab

在配置文件中加入django-crontab

setting.py

INSTALLED_APPS = [
    ...
    'django_crontab',
]
CRONJOBS = [
    ('* * * * *', 'django.core.management.call_command', 
    ['task'], {}, ">> task.log"),
]   # 与crontab定时器规则一样, []中写入任务名称,{}中可传入参数

这里使用了自定义的manage指令,本片中不做深入说明。也可以替换为要运行的py代码,写清楚详细路径即可。

添加crontab

现在就可以将任务添加进系统的crontab中了

python manage.py crontab add

收到下面的提示就算提交成功了,也可以通过 crontab -l查看当前有效的定时任务

bash -cl "/bin/python /home/hsm/Dropbox/Python2/project/manage.py crontab add /home/hsm/Dropbox/Python2/project"
  adding cronjob: (5137385ee17caca44bc53c1bef979825) -> ('* * * * *', 'django.core.management.call_command', ['task'], {}, '>> task.log')

删除crontab

要删除crontab,可执行

python manage.py crontab remove
标签:Crontab 发布于:2019-10-28 03:33:49