【django】使用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 所在的目录下的绝对路径
切换到manange.py 所在的目录 pwd:查看当前的路径。
sss:代表你django中自定义的指令
输入命令:crontab -e 编辑定时任务:

输入

0 16 * * * /xxx/xxx/xxx/lhq.sh > /xxxx/xxxx/xxxx/log.log 2>&1
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
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页

打赏

网络毒刘

授人玫瑰,手有余香。

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者