系统 | 支持 |
---|---|
Linux | √ |
Windows | × |
crontab是Linux系统提供的一个命令,用来完成定时任务;
使用django-crontab 扩展 封装了Linux提供的crontab 命令;
可以独立于程序之外,不会占用程序资源,耦合性低;
但是它不灵活,比如订单支付问题,crontab不知道要什么时候执行,所以它做不到。
pip install django-crontab
INSTALLED_APPS = [
...
'django_crontab'
]
# 定时任务
'''
* * * * * :分别表示 分(0-59)、时(0-23)、天(1 - 31)、月(1 - 12) 、周(星期中星期几 (0 - 7) (0 7 均为周天))
crontab范例:
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周一执行 0 0 * * 1
每月执行 0 0 1 * *
每天23点执行 0 23 * * *
'''
CRONJOBS = [
('*/1 * * * *', 'base.crontabs.confdict_handle', ' >> /tmp/logs/confdict_handle.log'), # 注意:/tmp/base_api 目录要手动创建
]
或者:
CRONJOBS = [
('*/5 * * * *', 'appname.cron.test','>>/home/test.log')
]
'''
‘/5 * * *’ 遵循的是crontab 语法。
‘appname.cron.test’,这个appname就是你开发时加入到settings中的那个。因为你的cron.py文件就在这个下面,否则找不到路径。cron 就是你自己起的任务文件的名字。test就是执行的函数中的内容。
‘>>/home/test.log’,通常会输出信息到一个文件中,就使用这个方法,注意的是‘>>’表示追加写入,’>’表示覆盖写入。
'''
from .models import ConfDict # base内的一个model,定时任务多数用来操作数据库,因此给一个示例
import datetime
# 定时任务
def confdict_handle():
try:
objs = CondDict.objects.all()
print(obj)
loca_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print('本地时间:'+str(loca_time))
except Exception as e:
print('发生错误,错误信息为:', e)
开启定时器
命令 | 释义 |
---|---|
python manage.py crontab add |
将任务添加并生效(查看开启的定时器) |
python manage.py crontab show |
显示当前的定时任务 |
python manage.py crontab remove |
删除所有定时任务 |
crontab -l |
查看定时任务列表 |