做原创视频网站,关于网络的网站怎么做,腾讯邮箱邮箱入口,东莞厚街天气1.安装库
pip install django-apscheduler
2.添加 install_app
django_apscheduler 3.在app下添加一个task.py文件#xff0c;用来实现具体的定时任务
task.pydef my_scheduled_job():print(这个任务每3秒执行一次, time.time())
4.在app下创建一个manag…1.安装库
pip install django-apscheduler
2.添加 install_app
django_apscheduler 3.在app下添加一个task.py文件用来实现具体的定时任务
task.pydef my_scheduled_job():print(这个任务每3秒执行一次, time.time())
4.在app下创建一个management文件夹里面包含一个空的__init__.py和一个文件夹commandscommands里面包含一个空的__init__.py和一个start_tasks.py其中start_tasks.py是主要的启动脚本结构如下 from datetime import datetime
from apscheduler.executors.pool import ThreadPoolExecutor
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.date import DateTrigger
from apscheduler.triggers.interval import IntervalTrigger
from django.core.management.base import BaseCommand
from django_apscheduler.jobstores import DjangoJobStorefrom ...tasks import my_scheduled_job, my_scheduled_job1#
# Django manage.py命令存储定时任务信息
#
class Command(BaseCommand):help 启动定时任务.def handle(self, *args, **options):# 调度器scheduler BlockingScheduler() # 研发阶段使用# scheduler BackgroundScheduler() # 生产阶段使用# 任务存储scheduler.add_jobstore(DjangoJobStore(), default)# 配置线程池执行器限制最大并发数为1防止并发executor ThreadPoolExecutor(max_workers1)scheduler.executor executor# 注册定义任务id_print_task print_task__jobprint(开始-增加任务({}).format(id_print_task))scheduler.add_job(my_scheduled_job,idid_print_task,nameid_print_task,max_instances1,replace_existingTrue,triggerIntervalTrigger(seconds15, start_datedatetime.now(), ), # 从当前时间开始每15秒钟调度一次)# 指定某个时间运行run_date datetime(2024, 7, 18, 18, 33)scheduler.add_job(my_scheduled_job1,idid_print_task1,nameid_print_task1,triggerDateTrigger(run_daterun_date), # 使用 DateTrigger 并设置 run_datereplace_existingTrue # 如果已存在同名任务则替换它)# 指定每天某个时间运行scheduler.add_job(my_scheduled_job1,iddaily_task_at_18_36,nameDaily Task at 18:36,triggerCronTrigger(hour18, minute38), # 使用 CronTrigger 并设置小时和分钟replace_existingTrue # 如果已存在同名任务则替换它)print(完成-增加任务({}).format(id_print_task))# 启动定时任务try:scheduler.start()except KeyboardInterrupt:scheduler.shutdown()5.修改settings.py配置将时区改为中国最主要是把USE两项注释掉否则后面的定时任务的时间会晚八小时
settings.pyLANGUAGE_CODE zh-hans # 中文语言代码TIME_ZONE Asia/Shanghai # 中国上海时区# USE_I18N True
#
# USE_TZ True
6.添加完成后做数据库迁移会生成 表django_apscheduler_djangojob 和 表django_apscheduler_djangojobexecution
python manage.py migrate
7.启动项目然后启动定时任务 python manage.py start_tasks
启动后任务开始执行数据库上述两张表会有数据进去定时任务完成其他的见后面拓展。 拓展
django-apscheduler框架还提供了很多操作定时任务的函数。比如
删除任务scheduler.remove_job(job_name)暂停任务scheduler.pause_job(job_name)开启任务scheduler.resume_job(job_name)获取所有任务scheduler.get_jobs()修改任务scheduler.modify_job(job_name)
注修改任务只能修改参数如果要修改执行时间的话有3种方法 第一就把任务删了重新创建 第二直接操作数据库 第三用到下面重设任务。
重设任务scheduler.reschedule_job(job_name)
scheduler.reschedule_job(job_idjob1, triggerinterval, minutes1)