django中设置定时任务
在django中设置定时任务我们可以借用django-crontab
这个第三包来实现
django-crontab
只能在linux系统下使用- 安装:
pip install django-crontab
- 将django_crontab注册到install app中
- 编写你的定时任务函数(我的是编写一个发送邮件的任务函数)
from django.core.mail import send_mail
from django.conf import settings
from django.template.loader import render_to_string
from task.models import Task
from django.contrib.auth.models import User
def send_task_email():
user_list = User.objects.filter()
for user in user_list:
tasks = Task.objects.filter(status=False, user=user)
if tasks:
html_message = render_to_string('task/task.html', {'tasks': tasks, 'user': user})
subject = '任务提醒'
message = ''
sender = settings.EMAIL_FROM
receiver = [user.email]
send_mail(subject, message, sender, receiver, html_message=html_message)
在settings中配置任务
CRONJOBS = [
('00 10 * * *', 'task.scheduled_task.send_task_email', '>>task.log'),
]
- 任务队列是一个列表,里面的每个元祖元素都是一个任务对象,
- 任务对象的的第一个参数为执行时间,
00 10 * * *
是每天10点执行
python # crontab范例 # 每五分钟执行 */5 * * * * # 每小时执行 0 * * * * # 每天执行 0 0 * * * # 每周执行 0 0 * * 0 # 每月执行 0 0 1 * *
- 第二个参数为任务函数的路径
- 第三个为log的位置
操作任务
- 添加任务
python manage.py crontab add
- 查看任务
python manage.py crontab show
- 删除任务
python manage.py crontab remove
原文地址:https://www.cnblogs.com/ivy-blogs/p/11695551.html
时间: 2024-10-02 18:07:57