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
相關文章
相關標籤/搜索