当前位置: 首页 > news >正文

Django使用django-apscheduler实现定时任务

定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。

我在这里使用的 django-apscheduler库来实现定时任务。

一、安装 django-apscheduler

pip install django-apscheduler

二、在项目的setting.py文件中修改配置

在INSTALLED_APPS 中添加 django_apscheduler 项。

三、通过命令生成定时任务记录表

在项目根目录,分别执行以下命令

1、根据数据库模型生成迁移文件

python manage.py makemigrations

2、执行迁移文件

python manage.py migrate

执行完以上两个命令后,在默认的数据库中会生成两个表,django_apscheduler_djangojobexecution 和 django_apscheduler_djangojob.

四、我一般是在项目中新建一个py文件,将所有需要定时执行的任务都保存在这个文件中。

比如我在项目的until目录中新建一个time.py文件。

打开这个文件将以下代码复制到文件中。

from django.shortcuts import render# Create your views here.
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_job
from until import logg
from app1 import tests# 实例化调度器
scheduler = BackgroundScheduler()
# 调度器使用默认的DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), 'default')# 30秒循环执行
@register_job(scheduler, 'interval', id='test', seconds=30,args=['test'], replace_existing=True)
def test(s):tests.adddata()logg.info("30秒到了,开始执行")# 每天八点半定时执行
@register_job(scheduler, 'cron', id='test1',hour=8, minute=30, args=['test'], replace_existing=True)
def test1(s):logg.info("开始执行")# 单次定时执行
@register_job(scheduler, 'date', id='test2', run_date='2024-06-10 06:06:06',args=['test'], replace_existing=True)
def test2(s):logg.info("30秒到了,开始执行")# 注册定时任务并开始
scheduler.start()

根据注释修改对应的定时任务和所要执行的方法就行。

主要的配置是触发器中的时间配置。可以参考以下参数。

  • date:任务只会执行一次。特定的时间点触发。
run_date (datetime 或 str) 作业的运行日期或时间
timezone (datetime.tzinfo 或 str) 指定时区
  • interval:固定时间间隔触发。
weeks (int) 间隔几周
days (int) 间隔几天
hours (int) 间隔几小时
minutes (int) 间隔几分钟
seconds (int) 间隔多少秒
start_date (datetime 或 str) 开始日期
end_date (datetime 或 str) 结束日期
timezone (datetime.tzinfo 或str) 时区
  • cron:在特定时间周期性地触发,和Linux crontab格式兼容。
year (int 或 str) 年,4位数字
month (int 或 str) 月 (范围1-12)
day (int 或 str) 日 (范围1-31
week (int 或 str) 周 (范围1-53)
day_of_week (int 或 str) 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
hour (int 或 str) 时 (范围0-23)
minute (int 或 str) 分 (范围0-59)
second (int 或 str) 秒 (范围0-59)
start_date (datetime 或 str) 最早开始日期(包含)
end_date (datetime 或 str) 最晚结束时间(包含)
timezone (datetime.tzinfo 或str) 指定时区

五、配置好定时任务以后,需要在setting.py同目录的urls文件中引入刚才的文件

from until import ttime

六、然后就可以启动项目了,到时间就可以看到定时任务执行了。

http://www.lryc.cn/news/377924.html

相关文章:

  • python数据分析:修改数据
  • 【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)
  • 日语 11 12
  • STM32程序启动过程
  • 天才简史——Diederik P. Kingma与他的Adam优化器
  • 两个src案例分享
  • 宕机了, redis如何保证数据不丢?
  • 太速科技-基于XCVU9P+ C6678的100G光纤的加速卡
  • Maven:一个下载jar依赖失败的问题解决方案
  • Java 枚举的基本使用
  • Semaphroe + CountDown
  • 解读代理 IP差异:ISP 代理与住宅代理
  • maven-jar-plugin maven打包插件笔记
  • 云服务器部署Neo4j
  • day64 图论 图论理论基础 深搜 广搜 98. 所有可达路径
  • 从0进入微服务需要了解的基础知识
  • MySQL之复制(七)
  • Redis分片集群搭建
  • 请解释Java中的策略模式,并举例说明其应用场景和实现方式。请解释Java中的模板方法模式,并讨论其在实际项目中的应用。
  • Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱
  • 基于Windows API DialogBox的对话框
  • 五十一、openlayers官网示例Layer Min/Max Resolution解析——设置图层最大分辨率,超过最大值换另一个图层显示
  • 24年计算机等级考试22个常见问题解答❗
  • obsidian制作自己的主题一文入门
  • 游戏心理学Day20
  • Serverless如何赋能餐饮行业数字化?乐凯撒思变之道
  • css系列:音频播放效果-波纹律动
  • WPF学习(1)--类与类的继承
  • Spring Boot框架的原理及应用详解(六)
  • 密码学与信息安全面试题及参考答案(2万字长文)