django-crontab实现服务端的定时任务的示例代码


Posted in Python onFebruary 17, 2020

 安装

pip install django-crontab

在Django项目中使用

settings.py

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'django_crontab'
)

配置任务

CRONJOBS=(
  # 每一分钟执行一次你的定时函数
  ('*/ * * * *', 'appname.cron.test'),
  # 定时函数输出的内容到指定文件(如果该路径或文件不存在将会自动创建)
  ('0 0 1 * *', 'app名.定时函数所在文件名.定时函数名', '>输出文件路径和名称'),
  # 在12点10分执行命令
  ('10 12 * * *', 'django.core.management.call_command', ['要执行的命令']),
)

官方demo

CRONJOBS = [
  ('*/5 * * * *', 'myapp.cron.my_scheduled_job'),

  # format 1
  ('0  0 1 * *', 'myapp.cron.my_scheduled_job', '>> /tmp/scheduled_job.log'),

  # format 2
  ('0  0 1 * *', 'myapp.cron.other_scheduled_job', ['myapp']),
  ('0  0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),
]

上述demo参数说明

  • 参数1:定时 例如47 11 * * * 表示每天的11时47分执行
  • 参数2:方法的python模块路径,如果执行django-admin命令,则写django.core.management.call_command
  • 参数3:方法的位置参数列表(默认值:[]),如果执行django-admin命令,则填写所需执行的命令,例如我们在polls中已经定义过的closepoll
  • 参数4:方法的关键字参数的dict(默认值:{})
  • 参数5:执行log存放位置(即重定向到文件,默认:'‘)

其余参数说明

  • CRONTAB_LOCK_JOBS
  • CRONTAB_EXECUTABLE
  • CRONTAB_DJANGO_PROJECT_NAME
  • CRONTAB_DJANGO_MANAGE_PATH
  • CRONTAB_DJANGO_SETTINGS_MODULE
  • CRONTAB_PYTHON_EXECUTABLE
  • CRONTAB_COMMAND_PREFIX
  • CRONTAB_COMMAND_SUFFIX
  • CRONTAB_COMMENT
  • 具体使用方法参考官方使用文档 ,有很详细的说明。

在app中(与views.py同级)新建cron.py文件(文件名不限定)

def test():
  print('django_crontab test')

使用操作

  • python manage.py crontab add

    添加定时任务

  • python manage.py crontab remove 清除定时任务
  • python manage.py crontab show   显示定时任务

扩展知识

前5个(*)星号

M(分钟0-59)
H(小时0-23)
D(天1-31)
m(月1-12)
d(一星期0-6,0为星期天)

特殊符号

* 代表所有的取值范围的数字
/ 代表每的意思,*/5就是每5个单位
- 代表从某个数字到某个数字
, 分开几个离散的数字

eg:

0 14 * * 1-5 周一到周五每天下午两点触发任务
0 10 * * 0,6 周六、周天早上十点触发任务
*/5 9-10 * * 1-5 周一到周五九点到十点每五分钟触发任务

日志打印

('*/ * * * *', 'appname.cron.test','> appname.txt'),

参考文档

django-crontab github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用的日期时间处理方法示例
Feb 08 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
python装饰器常见使用方法分析
Jun 26 Python
Python如何调用外部系统命令
Aug 07 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
python利用后缀表达式实现计算器功能
Feb 22 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 #Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 #Python
Python cookie的保存与读取、SSL讲解
Feb 17 #Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 #Python
Python交互环境下打印和输入函数的实例内容
Feb 16 #Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 #Python
基于python实现微信好友数据分析(简单)
Feb 16 #Python
You might like
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
vuex state及mapState的基础用法详解
2018/04/19 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python六大开源框架对比
2015/10/19 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Django 路由系统URLconf的使用
2018/10/11 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python set集合使用方法解析
2019/11/05 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
离婚财产分割协议书
2015/08/11 职场文书
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers