当前位置:   article > 正文

Django项目定时任务django-crontab

Django项目定时任务django-crontab

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

        1、首先安装django-crontab

pip install django-crontab

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

  1. INSTALLED_APPS = [
  2.     ...
  3.     'django_crontab',
  4. ]

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

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

        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,实际使用中,需根据自己情况编码

  1. # tasks.py
  2. import datetime
  3. import base64
  4. import hashlib
  5. import json
  6. import urllib3
  7. import requests
  8. from django.core.mail import send_mail
  9. import GovernmentManagement.settings
  10. from GuaranteeCommitmentLetter.models import MunicipalGuaranteeCommitmentLetter, DistrictGuaranteeCommitmentLetterAudit
  11. def Macheck_and_send_email():
  12. unit_company = MunicipalGuaranteeCommitmentLetter.objects.filter(guarantee_time__lt=datetime.datetime.now(), audit_status=0)
  13. user_email = {}
  14. for i in unit_company: # 获取company_name字段的值
  15. user_email[i.company_name] = i.user_email # 获取email字段的值
  16. system_name = {}
  17. for i in unit_company: # 获取company_name字段的值
  18. system_name[i.company_name] = i.system_name # 获取email字段的值
  19. if unit_company:
  20. for i in unit_company:
  21. # 发送邮件
  22. subject = '标题'
  23. message = 内容
  24. from_email = GovernmentManagement.settings.EMAIL_HOST_USER
  25. recipient_list = [user_email[i.company_name]]
  26. send_mail(subject, message, from_email, recipient_list) # 发送邮件
  27. return '邮件发送成功'
  28. else:
  29. return '无需发送邮件'
  30. return '无需发送短信'

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/408924
推荐阅读
相关标签
  

闽ICP备14008679号