您的位置:首页 > 编程语言 > Go语言

django-crontab定时任务

2015-11-05 19:07 786 查看


django-crontab实现定时任务


1 django-crontab安装

django-crontab安装

pip install
django-crontab


django-crontab加入:只需要将
django-crontab
加入到settings.py的
INSTALLED_APPS
即可。如下代码:
INSTALLED_APPS = (
'django_crontab',
...
)



2 django-crontab配置

django-crontab可以定时运行自定义命令和函数两种方式,因为之前尝试用command+crontab时已经实现了自定义command,所以自然而然使用了自定义命令这种形式。


2.1 django-crontab定时运行命令

我先参考Django官方文档自定义了一个命令
aizhan_5domain_visits
,专门用于抓取爱站流量,并将结果保存在sqlite3数据库中(具体步骤在本文中不赘述了)。

其次,我在
settings.py
中加入了django-crontab的命令:
CRONJOBS = [
('47 11 * * *', 'django.core.management.call_command', ['aizhan_5domain_visits']),
]


意思就是每天11点47分运行
aizhan_5domain_visits
这个命令。接下来就剩最后一步任务加载了。


2.2 django-crontab定时运行函数

django-crontab也可以定时运行函数,只是在
CRONJOBS
配置时有差别。
CRONJOBS
关于函数的配置如下:
CRONJOBS = (
# 初级模式
('*/5 * * * *', 'myproject.myapp.cron.my_scheduled_job'),

# 中级模式
('0   0 1 * *', 'myproject.myapp.cron.my_scheduled_job', '> /tmp/last_scheduled_job.log'),

#高级模式
('0   0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),
)


分析结果:

初级模式很直观,意思就是每五分钟执行一次
my_scheduled_job
这个程序;
中级模式有个后缀,意思是将程序
my_scheduled_job
的结果输出到文件
/tmp/last_scheduled_job.log
中;
高级模式加入了参数,其中
['dumpdata', 'auth']
{'indent': 4}
都是参数,只是
[]
中的参数是按照顺序代入,而
{}
中的参数指定了变量名称,最后一个也是输出结果的后缀。


3 django-crontab任务加载

django-crontab任务加载比较简单,只需要运行
python
manage.py crontab add
即可。如果你运行
crontab -e
可以看到crontab中多了一行:
* * *  /home/aizhan/bin/python /home/aizhan/aizhan/manage.py crontab run c27d1050fb7f87225bcff587ef5a35a3   # django-cronjobs for aizhan


这是django-crontab自动生成的。

如果要移除所有的任务,则运行
python
manage.py crontab remove
;
当你修改了任务,需要再次运行
python
manage.py crontab add


通过crontab -l 可以看到生成的定时任务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: