使用django-crontab执行django自定义指令

django-crontab 部署

  • 需求:再指定的时间内输入django的自定义指令,来进行一些需求的操作。

使用流程:

1.安装:

  • pip install django-crontab

2.配置 settings.py文件:

  • settings.py 文件中添加 django-crontab:

  • INSTALLED_APPS = (
        ...
        'django_crontab',
    )
    

3.配置django-crontab:

  • settings.py中添加一下命令:

  • CRONJOBS = [
        # 定时函数每分钟执行一次
        ('*/1 * * * *', '你的app名.定时函数所在的py文件名.定时函数名'),
        # 将定时函数执行结果输出到指定文件(如果该路径或文件不存在将会自动创建)
        ('*/1 * * * *', '你的app名.定时函数所在的py文件名.定时函数名', '>> 输出文件路径和名称')
    ]
    
  • 如果要再指定的时间内输入django自定义的指令,其实还可以定时函数:

    CRONJOBS = (
        # 每天早上6点执行命令
        ('0 6 * * *', 'django.core.management.call_command', ['要执行的命令']),
    )
    
  • 注意:要执行的命令,直接输入你django项目中自定义的指令就好,不需要添加python manage.py xxxxx(自定义指令)

操作命令:

查看系统中已有的定时任务:
  • python manage.py crontab show
添加和修改定时任务:
  • python manage.py crontab add
删除定时任务:
  • python manage.py crontab remove

注意事项:

1:该django-crontab : 不能再win系统上操作。
2:如果再操作命令的时候报错:
  • RuntimeError: No job with hash 18a9888406b9f5486e6b7ea52ee68dbf found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue!

  • 解决方案:意思就是修改过了,可以再执行一次命令就好:

    python manage.py crontab add

3:django-crontab 必须再linux的crontab开启的情况下才可以使用。
4:如果你测试有没有跑通的时候,输入的只是一个print()语句的话,那么你将看不到任何内容。
  • 可以再/var/spool/mail/root中查看你的输入语句:
  • 一般这种情况mail的内容就只是一些正常的系统信息或者是比较重要的错误报告。如果你安装了mutt的话直接用这个命令就可以查看mail的内容(用root登陆先),没有装的话用cat /var/spool/mail/root查看(用root登陆先)。

crontab的运行时间举例:

  • crontab范例 :

    每五分钟执行    */5 * * * *
    
    每小时执行      0 * * * *
    
    每天执行        0 0 * * *
    
    每周执行        0 0 * * 0
    
    每月执行        0 0 1 * *
    

crontab 常用命令:

  • crontab -e 编辑定时任务
  • crontab -l 查看定时任务

使用shell脚本来实现定时执行自定义指令:

  • 写一个shell脚本来自动运行:

  • 创建一个shell脚本:

    • #!/bin/bash/usr/bin/python /xxx/xxx/xxx/manage.py sss
    • xxx:manage.py 所在的目录下的绝对路径
    • sss:代表你django中自定义的指令
  • 输入命令:crontab -e 编辑定时任务:

    • 输入

      • 0 16 * * * /xxx/xxx/xxx/lhq.sh > /xxxx/xxxx/xxxx/log.log 2>&1
        

        0 16 * * *代表的是,每天的16点进行一次操作

      • 把lhq.sh 刚才创建的shell脚本放到跟manage.py同级目录下:

      • xxx代表的是:绝对路径

      • lhq.sh 后面的 > /xxxx/xxxx/xxxx/log.log 2>&1 导入log日志 xxxx 代表的是导入log日志的绝对路径。

  • 注意:

    • 可能此刻crontab没有跑起来, 去查看log 日志会提示你Permission denied

    • 解决方案:chmod 777 lhq.sh 就Ok了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值