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
:查看当前的路径。
- 切换到manange.py 所在的目录
- sss:代表你django中自定义的指令
-
输入命令:crontab -e 编辑定时任务:
扫描二维码关注公众号,回复: 4339710 查看本文章 -
注意:
-
可能此刻crontab没有跑起来, 去查看log 日志会提示你
Permission denied
-
解决方案:
chmod 777 lhq.sh
就Ok了。
-