zoukankan      html  css  js  c++  java
  • 迁移服务器遇到django-crontab不执行定时任务问题

    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任务加载(注意:服务器迁移过后,一定要查看下原服务器是否有定时任务在执行,如果有,就要在新服务器上从新添加该定时任务脚本,命令如下python manage.py crontab add

    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 可以看到生成的定时任务
  • 相关阅读:
    .Net中DataGridview数据如何导出到excel表
    SQLSEVER 中的那些键和约束
    数据仓库中数据粒度
    详解三层架构图
    三层概念总结
    SQL Sever 2008配置工具中过程调用失败解决方法
    设计模式之中介者模式
    设计模式之访问者模式
    设计模式之代理模式
    设计模式之迭代器模式
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/13473601.html
Copyright © 2011-2022 走看看