celery太麻烦了,目前还没掌握..
pip install django-crontab
INSTALLED_APPS = (
'django_crontab',
...
)
新建一个函数,可以建在views里,也可以单独建立,我选择的单独的文件,方便修改.
def task():
print '我是定时任务'
配置CRONJOBS
CRONJOBS = [
('*/5 * * * *', 'book.scheduled_task.refresh_task','>>/home/book.log')
]
这个需要放在settings.py里,实际开发的时候,我是放在一个单独的存放py文件里,导入使用的.也可以直接在settings.py修改
‘*/5 * * *’ 表示五分钟一次,而django-crontab是调用Linux的crontab.
如果写
CRONJOBS = [
(‘/1 * * * *’, ‘book.scheduled_task.refresh_task’,’>>/home/book.log’)
]
如果第一个参数写成/1会报错,a bad minute
adding cronjob: (d99049f006036f7b2de7f10db4c9771d) -> ('/1 * * * *', 'book.scheduled_task.refresh_task', '>>/home/book.log')
"/tmp/tmp5UR9mi":0: bad minute
正确写法,
*/1,*/5
CRONJOBS = [
('*/1 * * * *', 'book.scheduled_task.refresh_task','>>/home/book.log')
]
('55 16 * * *', 'book.scheduled_task.refresh_task','>>/home/book.log')
这样表示的是每天的16:55分执行
第二个参数是运行的函数的地址
python manage.py crontab add
如果报错
RuntimeError: No job with hash 18a9888406b9f5486e6b7ea52ee68dbf found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue!
意思是修改过了,可以再执行一次
python manage.py crontab add
就可以了.
还有就是django-crontab必须在Linux的crontab开启的情况下方可使用,不然会出现不执行的情况
2.显示当前的定时任务
python manage.py crontab show
3.删除所有定时任务
python manage.py crontab remove
4.常用命令
crontab -e ## 编辑定时任务
crontab -l ## 查看定时任务
5.常见的参数
“*” 表示可选的所有
“/”代表”每”, 比如若第一个参数为/5,就是五分钟一次
crontab范例
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
直接 crontab -e 编辑就可以
时间格式和上面django-crontab一样
如果是Python程序,直接Python 路径/py文件
比如:
*/5 * * * * python /pwd/tianqi.py
## pwd表示py文件的绝对路径
# */5表示每五分钟
无意间发现..不同用户具有不同的crontab,crontab -e编辑显示的内容也不同