Django学习笔记-定时器 CRONTAB

简介: 一、Introduction二、Backgoround三、CRONTAB1.安装2.配置3.添加定时任务4.启动任务四、结束五、参考一、Introduction在官网上的说明: dead simple crontab powered job scheduling for django 英语不好的我只是认为crontab能给django提供一个按照时间进行的作业调度的功能。

一、Introduction

在官网上的说明:
dead simple crontab powered job scheduling for django
英语不好的我只是认为crontab能给django提供一个按照时间进行的作业调度的功能。

二、Backgoround

在做网站的时候,往往需要在某个固定的时间点,或者某个固定的时间间隔自动的触发一个事件,进行一些操作。比如每个月的财务报表在月末的时候会自动生成,然后发一个账单到你的email中。

针对这个需求,我们就要使用crontab实现定时器的功能。
但是在django中实现定时器的工具有好几种,我们使用crontab是因为它比较简单,易于使用。
celery也可以实现这个功能,这里就不讨论了。

但是crontab有个缺点:
这里写图片描述

就是他不支持在windows使用。不过幸好博主就是在linux上开发的。

三、CRONTAB

话不多说,开始使用crontab吧。

1.安装

pip install django-crontab

2.配置

在setting.py中的INSTALLED_APPS加入django_crontab

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'django_crontab',
]

3.添加定时任务

app中的xxx.py中加入task()函数


# 某个app/xxx.py
def task():
   #定时任务
   ···

同时要在setting.py中添加这个定时任务

CRONJOBS = [
    # 每一分钟执行一次  
    ('*/1 * * * *', 'app名称.xxx.task')
]

具体参数解释:

前5个(*)星号:

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

特殊符号:

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

举个列子:

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

4.启动任务

# 将任务添加并生效
python manage.py crontab add
# 显示当前的定时任务
python manage.py crontab show
# 删除所有定时任务
python manage.py crontab remove
# 只运行定时任务试一试
python manage.py crontab run 

注意:
当添加一个定时任务后:
这里写图片描述
得到了一个hash值,所以在进行run的时候:


python manage.py crontab run 2fc2215151a785c33b28c74ad5feb636

就像git一样

除此之外,要有查看crontab的文件的命令:corntab -e

四、结束

运行这个项目就会定时触发事件,执行你要的代码了。
当然要是仅仅输出一些东西,运行的时候是看不到的。

打印log,传参等等这里就不赘述了。如图
这里写图片描述

五、参考

https://github.com/kraiz/django-crontab
https://pypi.python.org/pypi/django-crontab

相关文章
|
6月前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
6月前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
安全 中间件 开发者
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
387 5
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
|
数据库 数据安全/隐私保护 Python
【Django学习笔记 - 19】:认证、自定义认证、权限、限流
【Django学习笔记 - 19】:认证、自定义认证、权限、限流
281 0
【Django学习笔记 - 19】:认证、自定义认证、权限、限流
|
缓存 前端开发 数据库
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由2
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由
165 0
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由2
|
XML JSON 前端开发
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由
210 0
【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由
|
XML JSON 前端开发
【Django学习笔记 - 17】:序列化和反序列化(restful接口小案例、DRF的工程搭建、序列化器与序列化、验证、保存)
【Django学习笔记 - 17】:序列化和反序列化(restful接口小案例、DRF的工程搭建、序列化器与序列化、验证、保存)
528 0
【Django学习笔记 - 17】:序列化和反序列化(restful接口小案例、DRF的工程搭建、序列化器与序列化、验证、保存)
|
JSON 前端开发 JavaScript
【Django学习笔记 - 16】:DRF概述、Web应用模式(前后端分离简介)
【Django学习笔记 - 16】:DRF概述、Web应用模式(前后端分离简介)
299 0
【Django学习笔记 - 16】:DRF概述、Web应用模式(前后端分离简介)
|
Python
【Django学习笔记 - 15】:admin站点编辑(关联对象在列表页中添加,编辑页调整、图片设置)2
【Django学习笔记 - 15】:admin站点编辑(关联对象在列表页中添加,编辑页调整、图片设置)
101 0
【Django学习笔记 - 15】:admin站点编辑(关联对象在列表页中添加,编辑页调整、图片设置)2