django中设置定时任务

Posted ivy-blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中设置定时任务相关的知识,希望对你有一定的参考价值。

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

以上是关于django中设置定时任务的主要内容,如果未能解决你的问题,请参考以下文章

Django中通过定时任务触发页面静态化的方式

Django中使用celery来异步处理和定时任务

PHPwindow系统中设置计划任务,定时调用某接口

如何在Windows系统中设置Python程序定时运行

linux 服务器中设置crontab 定时任务&计算时间差值

vscode中设置vue代码片段