• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共43篇

    python3.X - Web - Django3.2.9

关闭

返回栏目

关闭

返回python3.X - Web - Django3.2.9栏目

33 - 扩展 - 定时任务 - django-crontab - 整合Linux crontab

作者:

贺及楼

成为作者

更新日期:2024-06-13 21:02:14

django-crontab
系统 支持
Linux
Windows ×

优点

crontab是Linux系统提供的一个命令,用来完成定时任务;
使用django-crontab 扩展 封装了Linux提供的crontab 命令;
可以独立于程序之外,不会占用程序资源,耦合性低;
但是它不灵活,比如订单支付问题,crontab不知道要什么时候执行,所以它做不到。

安装

  1. pip install django-crontab

settings.py 注册

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

设置执行任务

  1. # 定时任务
  2. '''
  3. * * * * * :分别表示 分(0-59)、时(0-23)、天(1 - 31)、月(1 - 12) 、周(星期中星期几 (0 - 7) (0 7 均为周天))
  4. crontab范例:
  5. 每五分钟执行 */5 * * * *
  6. 每小时执行 0 * * * *
  7. 每天执行 0 0 * * *
  8. 每周一执行 0 0 * * 1
  9. 每月执行 0 0 1 * *
  10. 每天23点执行 0 23 * * *
  11. '''
  12. CRONJOBS = [
  13. ('*/1 * * * *', 'base.crontabs.confdict_handle', ' >> /tmp/logs/confdict_handle.log'), # 注意:/tmp/base_api 目录要手动创建
  14. ]
  15. 或者:
  16. CRONJOBS = [
  17. ('*/5 * * * *', 'appname.cron.test','>>/home/test.log')
  18. ]
  19. '''
  20. ‘/5 * * *’ 遵循的是crontab 语法。
  21. ‘appname.cron.test’,这个appname就是你开发时加入到settings中的那个。因为你的cron.py文件就在这个下面,否则找不到路径。cron 就是你自己起的任务文件的名字。test就是执行的函数中的内容。
  22. ‘>>/home/test.log’,通常会输出信息到一个文件中,就使用这个方法,注意的是‘>>’表示追加写入,’>’表示覆盖写入。
  23. '''

apps/base/crontabs.py

  1. from .models import ConfDict # base内的一个model,定时任务多数用来操作数据库,因此给一个示例
  2. import datetime
  3. # 定时任务
  4. def confdict_handle():
  5. try:
  6. objs = CondDict.objects.all()
  7. print(obj)
  8. loca_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  9. print('本地时间:'+str(loca_time))
  10. except Exception as e:
  11. print('发生错误,错误信息为:', e)

开启定时器

命令 释义
python manage.py crontab add 将任务添加并生效(查看开启的定时器)
python manage.py crontab show 显示当前的定时任务
python manage.py crontab remove 删除所有定时任务
crontab -l 查看定时任务列表