django项目中使用crontab定时任务
django项目中使用crontab定时任务
django-crontab 在ubuntu-18.04.2上的使用
需求:django项目中需添加定时任务,定时执行某个函数或者自定义的命令等)
使用步骤
1. 安装django-crontab模块
pip install django-crontab
2. 在settings.py文件中注册
INSTALLED_APPS = [...'django_crontab',
]
3. 在settings.py文件中配置
定时执行自定义函数
CRONJOBS = [# ('*/1 * * * *', 'app名.定时函数所在的py文件名.定时函数名', '>> 输出文件路径和名称')# 每1分钟执行restart_pm2函数,并将执行中的返回的内容全部打印到crontab.log文件中('*/1 * * * *', 'app1.tasks.restart_pm2', '>>/home/wangzhipeng/myproject/crontab.log'), ]
定时执行django中自定义的命令
CRONJOBS = [# 每1分钟执行django的自定义命令,并将执行中的返回的内容全部打印到crontab.log文件中('*/1 * * * *', 'django.core.management.call_command', ['mycommand1'], {"param": "mycommand1_test"}, '>>/home/wangzhipeng/myproject/crontab.log'),('*/1 * * * *', 'django.core.management.call_command', ['mycommand2'], {"param": "mycommand2_test"}, '>>/home/wangzhipeng/myproject/crontab.log') ]
格式:
参数1:定时 例如*/1 * * * * 表示每隔1分钟执行
参数2:方法的python模块路径,如果执行django-admin命令,则写django.core.management.call_command
参数3:方法的位置参数列表(默认值:[]),如果执行django-admin命令,则填写所需执行的命令
参数4:方法的关键字参数的dict(默认值:{})
参数5:执行log存放位置(即重定向到文件,默认:’’)
4. 创建定时执行的函数和命令
4.1 在对应的应用下创建定时执行的函数(apps/app1/task.py文件中,添加is_restart_pm2()函数)
def restart_pm2():from time import strftime, localtimeprint(strftime("%Y-%m-%d %H:%M:%S", localtime()), end='')print("执行了restart_pm2函数")
4.2 在对应的应用下创建定时执行的函数(创建apps/app1/management/commands文件,注意management与commands要引入 __init__py作为模块使用中,在commands下创建自定义的命令,如下图所示:)
在commands文件下创建两个命令文件:mycommand1.py,mycommand1.py,内容如下:
mycommand1.py如下:from django.core.management.base import BaseCommand, CommandError from time import strftime, localtimeclass Command(BaseCommand):help = '这是第一个command测试指令'# 为handle中添加参数解析,def add_arguments(self, parser):parser.add_argument('-p', # 设置参数的时候 前边携带'--param',action='store',dest='param', # 自定义传入的参数键名ssdefault='close', # 默认的键值help='name of author.',)def handle(self, *args, **options):# print("mycommand1----开始")'''添加你需要功能,(访问数据库,判断有效性等等)...'''# 例如try:if options['param']:print(strftime("%Y-%m-%d %H:%M:%S", localtime()), end='')print(": mycommand1传入的参数为", options['param'])# except Exception as e:except Exception as e:print("12",e)print(CommandError("1111111111111111111111111"))# print("mycommand1----结束")
mycommand2.py如下:
from django.core.management.base import BaseCommand from time import strftime, localtimeclass Command(BaseCommand):help = '这是第二个command测试指令'# 为handle中添加参数解析,def add_arguments(self, parser):parser.add_argument('-p', # 设置参数的时候 前边携带'--param',action='store',dest='param', # 自定义传入的参数键名ssdefault='close', # 默认的键值help='name of author.',)def handle(self, *args, **options):# print("mycommand2----开始")'''添加你需要功能,(访问数据库,判断有效性等等)...'''# 例如if options['param']:print(strftime("%Y-%m-%d %H:%M:%S", localtime()), end='')print("mycommand2传入的参数为", options['param'])# print("mycommand2----结束")
4.3 测试自定义django命令
输入:python3 manage.py mycommand1 -p 123
输出:2019-05-10 15:10:59: mycommand1传入的参数为 123
结果:ok,可以使用
5. 执行结果展示
添加并开启定时任务:python3 manage.py crontab add
结果如下:
adding cronjob: (bf1cd50420be34c5385feba0ccbc8a2a) -> ('*/1 * * * *', 'app1.tasks.restart_pm2', '>>/home/wangzhipeng/myproject/crontab.log')adding cronjob: (3c1cf37daf3135751e741524b9b4da0b) -> ('*/1 * * * *', 'django.core.management.call_command', ['mycommand1'], {'param': 'mycommand1_test'}, '>>/home/wangzhipeng/myproject/crontab.log')adding cronjob: (d0d72e1cb25439aca55cbcddd5779427) -> ('*/1 * * * *', 'django.core.management.call_command', ['mycommand2'], {'param': 'mycommand2_test'}, '>>/home/wangzhipeng/myproject/crontab.log')
python环境查看定时任务:python3 manage.py crontab show
结果如下:
Currently active jobs in crontab:
bf1cd50420be34c5385feba0ccbc8a2a -> ('*/1 * * * *', 'app1.tasks.restart_pm2', '>>/home/wangzhipeng/myproject/crontab.log')
3c1cf37daf3135751e741524b9b4da0b -> ('*/1 * * * *', 'django.core.management.call_command', ['mycommand1'], {'param': 'mycommand1_test'}, '>>/home/wangzhipeng/myproject/crontab.log')
d0d72e1cb25439aca55cbcddd5779427 -> ('*/1 * * * *', 'django.core.management.call_command', ['mycommand2'], {'param': 'mycommand2_test'}, '>>/home/wangzhipeng/myproject/crontab.log')
在linux中(root下)查看定时i任务: crontab -l
结果如下:
*/1 * * * * /home/wangzhipeng/myproject/djangocelery/djangocelery/venv/bin/python3 /home/wangzhipeng/myproject/djangocelery/djangocelery/manage.py crontab run bf1cd50420be34c5385feba0ccbc8a2a >>/home/wangzhipeng/myproject/crontab.log # django-cronjobs for djangocelery
*/1 * * * * /home/wangzhipeng/myproject/djangocelery/djangocelery/venv/bin/python3 /home/wangzhipeng/myproject/djangocelery/djangocelery/manage.py crontab run 3c1cf37daf3135751e741524b9b4da0b >>/home/wangzhipeng/myproject/crontab.log # django-cronjobs for djangocelery
*/1 * * * * /home/wangzhipeng/myproject/djangocelery/djangocelery/venv/bin/python3 /home/wangzhipeng/myproject/djangocelery/djangocelery/manage.py crontab run d0d72e1cb25439aca55cbcddd5779427 >>/home/wangzhipeng/myproject/crontab.log # django-cronjobs for djangocelery
查看/home/wangzhipeng/myproject/crontab.log
中的打印的信息:执行成功了
6. 操作命令
查看系统中已有的定时任务:
python3 manage.py crontab show
添加和修改定时任务:
python3 manage.py crontab add
删除定时任务:
python3 manage.py crontab remove
额外说明:
django-crontab只能基于linux环境中才能使用(本文都是在ubuntu的root下实现的,普通用户下有小问题,未解决)
- 提前查看linux上cron服务是否有启动
查看status:service cron status
开启服务:service cron start
- 查看cron日志:
cat /var/log/cron.log
如果找不到日志文件,说明系统默认cron日志没有打开,可以参考下面给的文章 - linux中查看定时任务:
crontab -l
- linux中添加定时任务:
crontab -e
参考:
- https://blog.csdn.net/panyox/article/details/79157046
- https://blog.csdn.net/Fe_cow/article/details/83153932
- https://www.cnblogs.com/perfe/p/6198213.html
django项目中使用crontab定时任务相关推荐
- Django项目中集成富文本编辑器的通用方法,适合KindEditor,xhEditor,NicEditor,wymeditor等 .
首先,请参考我以前写的一篇博客:如何把nicEditor集成到django中使用 http://blog.csdn.net/huyoo/article/details/4382317 这篇文章中的做法 ...
- 83.Django项目中使用验证码
1. 概述 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...
- spring boot项目中处理Schedule定时任务
默认,springboot已经支持了定时任务Schedule模块,所以一般情况已经完全能够满足我们的实际需求,一般来说,没有必要在加入其他类似于:quartz 另外,在这里提一个实际项目中,关于定时任 ...
- Celery在Django 项目中如何使用
创建目录celery_pro,并在celery_pro下创建下面两个文件 celery.py # celery.py # -*- coding:utf8 -*- from __future__ imp ...
- django项目用celery实现定时任务
celery beat 简介 在项目开发过程中,经常遇到要定期执行的任务,如定期备份数据,检查设备状态,定时发送邮箱等,celery beat 是1个开发效率很高的定时任务框架,而且运行非常稳定. C ...
- Linux中的crontab 定时任务设置
1.11.2 crontab 定时任务设置 1.11.2.1 基本语法 crontab [选项] 1.11.2.1 选项说明 选项 功能 -e 编辑 crontab 定时任务 -l 查询 cronta ...
- 在Django项目中使用富文本编辑器
2019独角兽企业重金招聘Python工程师标准>>> 1 开发要点 现在网上有很多的富文本编辑器,包括Markdown.tinymce.UEditor.KindEditor.cke ...
- Django项目中使用第三方登录——支付宝登录
1. 首先在支付宝开放平台(https://open.alipay.com/platform/home.htm)扫码注册信息 选择开发者中心选择研发服务 配置沙盒应用密钥 使用密钥生成工具生成公钥与私 ...
- Django项目中浏览器显示127.0.0.1拒绝我们的连接请求
在运行Django项目的时候,登录页面已经进去,后面的页面中浏览器却显示127.0.0.1拒绝了我们的连接请求. 解决方法:在settings.py文件里注释掉:django.middleware.c ...
最新文章
- Git之深入解析本地仓库的基本操作·仓库的获取更新和提交历史的查看撤销以及标签别名的使用
- android高德地图绘制多边形_exlive1.0BS网上查车完善电子围栏:行政区域、多边形、规划线路...
- 调查显示企业对 Linux 开发人才需求日渐增长
- ABB机器人的错误处理
- 华为服务器双系统教程,服务器上安装双系统
- 转:性能测试中常见的性能问题及识别方法
- sql通用防注入程序php,sql通用防注入系统_PHP教程
- 乱码翻译器在线翻译_GAL党的福音——开源生肉翻译器MisakaTranslator正式版发布...
- android之App widget实际应用Demo
- 苹果手机删除计算机怎么恢复出厂设置密码,教你如何解决忘记ipad删除恢复出厂设置密码...
- 微信小程序-canvas 2d带动画的半圆形刻度进度条
- 针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
- 电机与运动控制笔记整理(三)——异步电机概述
- 测试前置条件及测试点
- 【人工智能项目】机器学习中文垃圾邮件分类任务
- 用位运算完成大小比较
- 从零开始编写SAT求解器(一)
- Linux串口驱动程序(3)-打开设备
- 欧盟或将成为全球人工智能道德规范引领者
- 平面投影坐标转经纬度坐标