Django定时任务框架django-apscheduler的使用
创始人
2024-12-28 14:37:19
0

1.安装库

pip install django-apscheduler

2.添加 install_app    

django_apscheduler

3.在app下添加一个task.py文件,用来实现具体的定时任务

task.py  def my_scheduled_job():     print("这个任务每3秒执行一次", time.time())

4.在app下创建一个management文件夹,里面包含一个空的__init__.py和一个文件夹commands,commands里面包含一个空的__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 DjangoJobStore  from ...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_workers=1)         scheduler.executor = executor          # 注册定义任务         id_print_task = 'print_task__job'         print('开始-增加任务({})'.format(id_print_task))         scheduler.add_job(             my_scheduled_job,             id=id_print_task,             name=id_print_task,             max_instances=1,             replace_existing=True,             trigger=IntervalTrigger(seconds=15, start_date=datetime.now(), ),  # 从当前时间开始,每15秒钟调度一次         )          # 指定某个时间运行         run_date = datetime(2024, 7, 18, 18, 33)         scheduler.add_job(             my_scheduled_job1,             id='id_print_task1',             name='id_print_task1',             trigger=DateTrigger(run_date=run_date),  # 使用 DateTrigger 并设置 run_date             replace_existing=True  # 如果已存在同名任务,则替换它         )          # 指定每天某个时间运行         scheduler.add_job(             my_scheduled_job1,             id='daily_task_at_18_36',             name='Daily Task at 18:36',             trigger=CronTrigger(hour=18, minute=38),  # 使用 CronTrigger 并设置小时和分钟             replace_existing=True  # 如果已存在同名任务,则替换它         )         print('完成-增加任务({})'.format(id_print_task))          # 启动定时任务         try:             scheduler.start()         except KeyboardInterrupt:             scheduler.shutdown() 

5.修改settings.py配置,将时区改为中国,最主要是把USE两项注释掉,否则后面的定时任务的时间会晚八小时!!!!

settings.py  LANGUAGE_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_id="job1", trigger='interval', minutes=1)

相关内容

热门资讯

9分钟辅助器!wpk真吗(透视... 9分钟辅助器!wpk真吗(透视辅助)详细辅助方法(确实真的有挂);1、全新机制【软件透明挂】2、全新...
5分钟有作弊!如何下载wpk透... 5分钟有作弊!如何下载wpk透视版,wpk透视辅助靠谱吗,详细教程(有挂app)1、超多福利:超高返...
四分钟下载链接!wpk控制牌是... 四分钟下载链接!wpk控制牌是真的吗(透视辅助)详细辅助教程(都是真的是有挂);所有人都在同一条线上...
六分钟透视辅助!wpk德州局怎... 六分钟透视辅助!wpk德州局怎么透视,wpk可以作弊吗,详细教程(有挂app);1、机器人多个强度级...
2分钟辅助!wpk俱乐部有没有... 2分钟辅助!wpk俱乐部有没有辅助,wpk软件是正规的吗,详细教程(有挂安装)1)辅助挂:进一步探索...
八分钟透视!wpk辅助是什么(... 八分钟透视!wpk辅助是什么(透视辅助)详细辅助作弊(本来是真的有挂)亲,关键说明,wpk辅助赛季回...
八分钟俱乐部!wpk德州局怎么... 八分钟俱乐部!wpk德州局怎么透视(透视辅助)详细辅助模拟器(总是真的是有挂)1、实时开挂更新:用户...
4分钟模拟器!购买的wpk辅助... 4分钟模拟器!购买的wpk辅助在哪里下载(透视辅助)详细辅助机器人(本来是真的有挂)1、wpk辅助a...
3分钟辅助!wpk透视插件(透... 3分钟辅助!wpk透视插件(透视辅助)详细辅助插件(都是存在有挂);1、下载好wpk透视插件辅助软件...
十分钟透视插件!wpk可以作弊... 十分钟透视插件!wpk可以作弊吗(透视辅助)详细辅助教程(一直真的有挂)1、ai辅助优化,发牌逻辑科...