IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django定时任务之django-crontab -> 正文阅读

[Python知识库]Django定时任务之django-crontab

Django定时任务之django-crontab

一.官网

GitHub地址:https://github.com/kraiz/django-crontab

优点:接入也很方便,功能也很全面

缺点:存在一些坑和无法解决的问题,使用时需注意

注意:django-crontab只能基于linux环境使用

二.基本使用

1.安装

pip install django-crontab

2.注册APP,配置到settings INSTALLED_APPS

INSTALLED_APPS = (
    'django_crontab',
    ...
)

3.编写定时任务

在Django的APP下面新建一个myapp/crontab.py文件,把需要执行的定时任务放进去

实例:

# 每隔5分钟运行一次
def my_scheduled_job():
  pass

# 每隔6小时运行一次
def test_scheduled_job():
  pass

4.在settings中增加CRONJOBS配置

CRONJOBS = [
    # 每隔5分钟运行一次
    ('*/5 * * * *', 'myapp.crontab.my_scheduled_job'),
    # 每隔6小时运行一次
    ('*/360 * * * *', 'myapp.crontab.test_scheduled_job'),
]

5.基本语法

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

#所有的值都必须在相应的范围之内,否则视为无效。在填值区域内可以是*也可以是以”,”分隔的一组值。值可以是一个数据也可以是用连接符连起来的两个数(表示范围)。
#星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
#逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
#中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
#正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
注:日期的格式可以是星期,也可以是一个月中的天。假如两个都有值,则在这两个时间都会执行。

733392-20180530112549735-793099971

6.基本格式:

定时执行自定义函数:

  • 要求:cron计时通常格式(有关更多示例,请参阅 Wikipediacrontab.guru
  • 要求:Django项目模块路径下待执行定时任务.
  • 可选:将执行结果或日志写入文件的路径.
CRONJOBS = [
   # ('*/1 * * * *', 'app名.定时函数所在的py文件名.定时函数名', '>> 输出文件路径和名称')
    # 每1分钟执行restart_pm2函数,并将执行中的返回的内容全部打印到crontab.log文件中
    ('*/1 * * * *', 'app1.tasks.test11', '>>/home/tianchi/apps/ecology/logs/crontab.log'),
]

定时执行自定义命令:

  • 要求:cron计时通常格式
  • 要求:python模块路径下待执行定时任务
  • 可选:方法的位置参数列表(默认值:[])
  • 可选:方法的关键字参数的dict(默认值:{})
  • 可选:将执行结果或日志写入文件的路径.
CRONJOBS = [
    # 每1分钟执行django的自定义命令,并将执行中的返回的内容全部打印到crontab.log文件中
    # ('*/1 * * * *', 'django.core.management.call_command', ['命令名'], {"参数名": "参数值"}, '>>输出文件路径和名称'),
    ('*/1 * * * *', 'django.core.management.call_command', ['mycommand2'], {"param": "mycommand2_test"}, '>>/home/tianchi/apps/ecology/logs/crontab.log')
]

7.简单实例:

晚上11点到早上8点之间每两个小时,早上8点    0 23-7,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点    0 11 4 * 1-3
1月1日早上4点    0 4 1 1 * 

三.常用命令

添加并开启定时任务

python manage.py crontab add

python环境查看定时任务

python manage.py crontab show

删除定时任务

python manage.py crontab remove

查看定时任务:

sudo crontab -l

四.更多参考:

博客园:

阿里云:

五.填坑记:

# corn 错误写法:
* */1 * * * #错误的每隔一小时执行一次,事实上每分钟执行一次
0 */3 * * * #错误的每隔3小时执行一次写法,实际上每整3小时的0分执行一次。也就是说,它会在每天的3点、9点、12点...等3的整数倍时间点来执行
# 正确写法:
*/60  * * * * #每60分钟即每小时执行一次
*/180 * * * * #正确的每隔3小时执行一次写法
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:10:10  更:2022-09-13 11:13:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:12:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码