django-crontab执行定时任务

最 近在用django写一下网站,要写一下定时任务,djcelery比较复杂,就使用了django-crontab

摘自:http://www.aiuxian.com/article/p-3187478.html

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 可以看到生成的定时任务

转载于:https://www.cnblogs.com/linwenbin/p/11461131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值