乐趣区

关于django:使用djangocrontab建立定时任务

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'
退出移动版