django-crontab 定时任务
django-crontab 定时任务
郭周园 发表于6个月前
django-crontab 定时任务
  • 发表于 6个月前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

Django定时任务

  • django-celery (目前运维平台使用的方式)
  • django-crontab (一些简单的后台需要定时任务如果不用系统的crontab的话,建议使用它,引入使用都是非常简单)

django-crontab安装

  • 安装
pip install django-crontab -i https://pypi.doubanio.com/simple/  
  • django中引入,只需要将django-crontab加入到settings.py的INSTALLED_APPS即可。如下代码:
INSTALLED_APPS = (  'django_crontab',  ...)
  • django-crontab定时运行命令
将命令写在project/app/cron.py中的run_python函数中,multitask(表示一个app),scripts(文件夹)CRONJOBS = [      # 每天6点计算当月的域名的中断时间和中断次数    ('0 6 * * *', 'multitask.scripts.cron.run_python',[],{},'>/tmp/django_crontab.log'),]

django-crontab定时运行函数

  • django-crontab也可以定时运行函数,只是在CRONJOBS配置时有差别。CRONJOBS关于函数的配置如下:
CRONJOBS = (      # 初级模式    ('*/5 * * * *', 'app.cron.my_scheduled_job'),    # 中级模式    ('0   0 1 * *', 'app.cron.my_scheduled_job', '> /tmp/last_scheduled_job.log'),    #高级模式    ('0   0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /tmp/auth_backup.json'),)
  • 分析结果:
    • 初级模式很直观,意思就是每五分钟执行一次myscheduledjob这个程序
    • 中级模式有个后缀,意思是将程序myscheduledjob的结果输出到文件/tmp/lastscheduledjob.log中;
    • 高级模式加入了参数,其中['dumpdata', 'auth']和{'indent': 4}都是参数,只是[]中的参数是按照顺序代入,而{}中的参数指定了变量名称,最后一个也是输出结果的后缀。

django-crontab任务加载

  • django-crontab任务加载比较简单,只需要运行python manage.py crontab add即可。如果你运行crontab -e可以看到crontab中多了一行:
06 * * * /usr/bin/python /data/ops/manage.py crontab run d14277ca319041214070e145d358f835 >/tmp/django_crontab.log # django-cronjobs for cmdb  
  • 这是django-crontab自动生成的。
    • 如果要移除所有的任务,则运行python manage.py crontab remove
    • 当你修改了任务,需要再次运行python manage.py crontab add
    • 查看当前运行中的任务,则运行python manage.py crontab show
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 27
码字总数 5701
×
郭周园
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: