Django项目定时任务django-crontab

        首先定义一个定时任务函数tasks.py(见文章末尾示例),编写函数,然后在setting.py中配置定时任务

        1、首先安装django-crontab

pip install django-crontab

        2、在setting.py中添加应用 (在所有自定义注册app之上)

INSTALLED_APPS = [
    ...
    'django_crontab',
]

        在项目根路径setting.py中设置定时任务

# 定时任务
CRONJOBS = [
    # 每分钟发送一条通知
    # app:为应用名,cron为py文件名,inform为文件中的函数
    ('0 12 * * *', 'GuaranteeCommitmentLetter.tasks.Dacheck_and_send_email'),  # 每天12点执行
    ('0 12 * * *', 'GuaranteeCommitmentLetter.tasks.Macheck_and_send_email'),
    ('0 12 * * *', 'GuaranteeCommitmentLetter.tasks.Macheck_and_send_dingtalk'),
    ('0 12 * * *', 'GuaranteeCommitmentLetter.tasks.Dacheck_and_send_dingtalk'),
    ('0 12 * * *', 'GuaranteeCommitmentLetter.tasks.Macheck_and_send_mas'),
]

        3、非英文字符处理,在setting.py中加入这行

CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'

        4、开启定时任务

python manage.py crontab add

 

        5、查看定时任务

python manage.py crontab show

 

        6、删除定时任务

python manage.py crontab remove

 

        7、直接运行定时任务,任务id在你add的时候前面有一个哈希的id

python manage.py crontab run <任务id>        

         附:项目tasks.py,实际使用中,需根据自己情况编码

# tasks.py
import datetime
import base64
import hashlib
import json

import urllib3
import requests
from django.core.mail import send_mail

import GovernmentManagement.settings
from GuaranteeCommitmentLetter.models import MunicipalGuaranteeCommitmentLetter, DistrictGuaranteeCommitmentLetterAudit


def Macheck_and_send_email():
    unit_company = MunicipalGuaranteeCommitmentLetter.objects.filter(guarantee_time__lt=datetime.datetime.now(), audit_status=0)
    user_email = {}
    for i in unit_company:  # 获取company_name字段的值
        user_email[i.company_name] = i.user_email  # 获取email字段的值
    system_name = {}
    for i in unit_company:  # 获取company_name字段的值
        system_name[i.company_name] = i.system_name  # 获取email字段的值

    if unit_company:
        for i in unit_company:
            # 发送邮件
            subject = '标题'
            message = 内容
            from_email = GovernmentManagement.settings.EMAIL_HOST_USER
            recipient_list = [user_email[i.company_name]]
            send_mail(subject, message, from_email, recipient_list)  # 发送邮件
        return '邮件发送成功'
    else:
        return '无需发送邮件'

        return '无需发送短信'

相关推荐

  1. django 定时任务的创建

    2024-04-08 06:00:02       17 阅读
  2. 定时任务cron与crontab

    2024-04-08 06:00:02       12 阅读
  3. Django 使用Apscheduler执行定时任务

    2024-04-08 06:00:02       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 06:00:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 06:00:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 06:00:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 06:00:02       18 阅读

热门阅读

  1. Github 2024-04-07 开源项目日报 Top10

    2024-04-08 06:00:02       12 阅读
  2. 机器学习--分类算法

    2024-04-08 06:00:02       12 阅读
  3. MySQL从入门到精通——基础篇

    2024-04-08 06:00:02       13 阅读
  4. Vim脚本语言入门:打造你的编辑器

    2024-04-08 06:00:02       17 阅读
  5. cdn背后nginx 设置获取真实IP及安全配置

    2024-04-08 06:00:02       12 阅读
  6. 3.5Shell_Expansions

    2024-04-08 06:00:02       20 阅读
  7. 李沐19_卷积层——自学笔记

    2024-04-08 06:00:02       12 阅读
  8. 146 LRU缓存

    2024-04-08 06:00:02       14 阅读
  9. HTTP的强制缓存和协商缓存

    2024-04-08 06:00:02       14 阅读