python scheduler 定时执行_Python使用APScheduler实现定时任务

简介:APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

在线文档:https://apscheduler.readthedocs.io/en/latest/userguide.html

一、安装APScheduler

pip install apscheduler

二、基本概念介绍

触发器(triggers):

触发器包含调度逻辑,描述一个任务何时被触发,按日期或按时间间隔或按 cronjob 表达式三种方式触发。每个作业都有它自己的触发器,除了初始配置之外,触发器是完全无状态的。

三种内建的trigger:

(1)date: 特定的时间点触发

(2)interval: 固定时间间隔触发

(3)cron: 在特定时间周期性地触发

作业存储器(job stores):

作业存储器指定了作业被存放的位置,默认情况下作业保存在内存,也可将作业保存在各种数据库中,当作业被存放在数据库中时,它会被序列化,当被重新加载时会反序列化。作业存储器充当保存、加载、更新和查找作业的中间商。在调度器之间不能共享作业存储。

执行器(executors):

执行器是将指定的作业(调用函数)提交到线程池或进程池中运行,当任务完成时,执行器通知调度器触发相应的事件。

调度器(schedulers):

任务调度器,属于控制角色,通过它配置作业存储器、执行器和触发器,添加、修改和删除任务。调度器协调触发器、作业存储器、执行器的运行,通常只有一个调度程序运行在应用程序中,开发人员通常不需要直接处理作业存储器、执行器或触发器,配置作业存储器和执行器是通过调度器来完成的。

根据开发需求选择相应的组件,下面是不同的调度器组件:

BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。

BackgroundScheduler 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。

AsyncIOScheduler AsyncIO调度器,适用于应用使用AsnycIO的情况。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python实现定时任务的几种方法: 1. 使用while True和time.sleep()函数实现定时任务 ```python import time def some_task(): print("This is a timed task.") while True: some_task() time.sleep(60) # 每隔60秒执行一次任务 ``` 2. 使用threading.Timer定时实现定时任务 ```python import threading def some_task(): print("This is a timed task.") def timer(): some_task() timer = threading.Timer(60, timer) # 每隔60秒执行一次任务 timer.start() timer() ``` 3. 使用Timeloop库实现定时任务 ```python from timeloop import Timeloop from datetime import timedelta tl = Timeloop() @tl.job(interval=timedelta(seconds=60)) def some_task(): print("This is a timed task.") tl.start(block=True) ``` 4. 使用调度模块sched实现定时任务 ```python import sched import time s = sched.scheduler(time.time, time.sleep) def some_task(): print("This is a timed task.") s.enter(60, 1, some_task, ()) # 每隔60秒执行一次任务 s.enter(60, 1, some_task, ()) s.run() ``` 5. 使用任务框架APScheduler实现定时任务 ```python from apscheduler.schedulers.blocking import BlockingScheduler def some_task(): print("This is a timed task.") scheduler = BlockingScheduler() scheduler.add_job(some_task, 'interval', seconds=60) # 每隔60秒执行一次任务 scheduler.start() ``` 6. 使用分布式消息系统celery执行定时任务 ```python from celery import Celery from datetime import timedelta app = Celery('tasks', broker='pyamqp://guest@localhost//') @app.task def some_task(): print("This is a timed task.") app.conf.beat_schedule = { 'some_task': { 'task': 'tasks.some_task', 'schedule': timedelta(seconds=60), # 每隔60秒执行一次任务 }, } app.conf.timezone = 'UTC' ``` 7. 使用Windows自带的定时任务 在Windows系统中,可以使用计划任务来实现定时任务。具体操作可以参考Windows系统的相关文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值