使用django-crontab建立定时任务

Chris

1、安装django-crontab

pip install django-crontab

2、在django项目settings.py中注册

INSTALLED_APPS = [
    ......
    'django_crontab',
    'app_name'
]

【注意】django_crontab一定要注册在应用名之前,在这里是下划线,不是短横。

3、在settings.py中配置定时任务

# 定时任务
CRONJOBS = [
    ('*/5 * * * *', 'RecomEvalBackend.job.syncMcnData.task'),
    ('*/5 * * * *', 'RecomEvalBackend.job.syncMcnData.task','>> test.log'),
    ('*/5 * * * *', 'RecomEvalBackend.job.syncMcnData.task',['param1','param2'],{'param3': 4},'>> test.log')
]

【注意】
(1)这里的定时任务脚本,一定是要放在应用文件夹下的;
(2)RecomEvalBackend.job.syncMcnData.task这部分的写法应为:应用名.文件夹.文件名.方法名

4、如何在django中添加任务

#django中添加定时任务
python manage.py crontab add
#django中移出定时任务
python manage.py crontab remove
#django中展示已添加的定时任务
python manage.py crontab show
#django中单次手动执行定时任务
python manage.py crontab run <tash_hash_id>

5、原理

原理是django把定时任务添加到了linux的定时任务crond服务中。所以这里要求crond服务必须是开启的
查看服务器中定时任务命令:

crontab -e

查看crond服务状态:

#查看状态
service crond status
#开启服务
service crond start
#关闭服务
service crond stop
#重启服务
service crond restart

6、其他注意事项

(1)django-crontab不支持windows和mac系统;在windows上执行会报错,如下:

  ...
  File "C:\Users\youngzhang\AppData\Local\Programs\Python\Python36\lib\site-packages\django_crontab\management\commands\crontab.py", line 4, in <module>
    from django_crontab.crontab import Crontab
  File "C:\Users\youngzhang\AppData\Local\Programs\Python\Python36\lib\site-packages\django_crontab\crontab.py", line 3, in <module>
    import fcntl
ModuleNotFoundError: No module named 'fcntl'
阅读 181

Keep Hungery!

131 声望
3 粉丝
0 条评论

Keep Hungery!

131 声望
3 粉丝
宣传栏