• django crontab定时执行任务


    安装 pip install django-crontab

    添加app名称到 settings.py中

    1. INSTALLED_APPS = (
    2. 'django_crontab',#这个不是app的名字,必须要添加到前面,不能接着app后面添加,否则会报错
    3. ...
    4. )

    接下来创建定时任务可以分成两种,一种是执行自定义的mange.py的命令,另一种是执行自定义函数。

    我选择的方法是自定义函数。

    首先在原来的app 中(与view.py同级)新建一个cron.py (名字可以任意,其实也可以放在view.py中,新建文件方便管理。)

    1. def test():
    2. print 123
    3. #你要执行的任务函数

    在 settings.py中的最后增加

    1. CRONJOBS = [
    2. ('*/5 * * * *', 'appname.cron.test','>>/home/test.log')
    3. ]

    如果你有多个定时任务,都放入CORJOBS中即可, 
    需要说明的是, 
    ‘/5 * * *’ 遵循的是crontab 语法。

    ‘appname.cron.test’,这个appname就是你开发时加入到settings中的那个。因为你的cron.py文件就在这个下面,否则找不到路径。cron 就是你自己起的任务文件的名字。test就是执行的函数中的内容。

    ‘>>/home/test.log’,通常会输出信息到一个文件中,就使用这个方法,注意的是‘>>’表示追加写入,’>’表示覆盖写入。

    启动

    以上都完成后,需要执行 
    python manage.py crontab add 
    将任务添加并生效

    显示当前的定时任务 
    python manage.py crontab show

    删除所有定时任务 
    python manage.py crontab remove

    重启django服务。 
    执行 
    crontab -e 
    可以看到系统中创建了该定时任务。 
    说到底,只是django-crontab插件对linux底层的调用,这个方法在windows 上不生效。

    各种路径一定要确保正确,否则较难排查错误。

    错误一

    1、django.core.exceptions.ImproperlyConfigured: Requested setting EMAIL_BACKEND, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

    解决办法:

    1. import os,django
    2. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "XXXX.settings")# project_name 项目名称 要并写正确
    3. django.setup()

    错误二

    2、ModuleNotFoundError: No module named 'XXX' 解决方法

    解决办法:

    看错误1 检查xxx.settings 拼写 或路径是否正确!

    3、No job with hash 2be49f0a34207a4b9fd6fb0d3df2d78e found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue! 解决办法

    重新启动项目,在执行对crontab 的操作

    #错误三

    单独用.py文件处理业务时,需要把调用的模块放到方法中不然会报错

  • 相关阅读:
    java两个栈实现一个队列&&两个队列实现一个栈
    Java HashSet和ArrayList的查找Contains()时间复杂度
    Java KMP算法代码
    利用集合求取字符串里每个字符的个数
    快速失败and安全失败
    Java 巴什博弈(取石子报数问题)
    [知识点][施工中] 1.1 部分IDE介绍
    [知识点] 4.4 动态规划进阶模型——树形/DAG/数位DP
    [知识点] 4.3 动态规划基础模型——区间DP/LIS/LCS
    [课堂小笔记] 数字电子技术
  • 原文地址:https://www.cnblogs.com/slqt/p/10854961.html
Copyright © 2020-2023  润新知