首页 > 编程语言 >python apscheduler定时任务处理

python apscheduler定时任务处理

时间:2024-08-21 18:38:06浏览次数:9  
标签:__ int python 调度 apscheduler job str 定时 BlockingScheduler

Apscheduler

Apscheduler是一个基于Quartz的python定时任务框架,提供了基于日期、固定时间间隔以及corntab类型的任务,并且可持久化任务。

安装apscheduler依赖库

pip install apscheduler
APScheduler组件:
  • schedulers -调度器
  • triggers -触发器
  • job stores -作业存储器
  • executors -执行器
schedulers(调度器)
  • BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。(常用)
  • BackgroundScheduler 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。(常用)
  • AsyncIOScheduler AsyncIO调度器,适用于应用使用AsnycIO的情况。
  • GeventScheduler Gevent调度器,适用于应用通过Gevent的情况。
  • TornadoScheduler Tornado调度器,适用于构建Tornado应用。
  • TwistedScheduler Twisted调度器,适用于构建Twisted应用。
  • QtScheduler Qt调度器,适用于构建Qt应用。
triggers(触发器)

1、date 触发器

参数 说明
run_date (datetime 或 str) 作业的运行日期或时间
timezone (datetime.tzinfo 或 str) 指定时区

2、interval 触发器,固定时间间隔触发。

参数 说明
weeks (int) 间隔几周
days (int) 间隔几天
hours (int) 间隔几小时
minutes (int) 间隔几分钟
seconds (int) 间隔多少秒
start_date (datetime 或 str) 开始日期
end_date (datetime 或 str) 结束日期
timezone (datetime.tzinfo 或str)

3、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) 指定时区
job store (作业存储)

该组件是对调度任务的管理,添加 job 有两种添加方法,其中一种是 .add_job(), 另一种则是@scheduled_job()装饰器来修饰函数。

示例1:

# .add_job()

from apscheduler.schedulers.background import BackgroundScheduler
import time


# 定义一个job方法
def job_fun():
  print("this is a work function job")


if __name__ == '__main__':

    # 创建后台调度器
    scheduler = BlockingScheduler()
    # 添加定时任务,每隔5秒执行一次
    scheduler.add_job(job_fun, 'interval', seconds=5, args=[1], max_instances=3)

    # 启动调度器
    scheduler.start()

示例2:

import time
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

# 每隔 5秒钟
@scheduler.scheduled_job('interval', seconds=5)
def job1():    
    print('----- this is interval scheduled_job. -----')

# 每隔 10秒钟
@scheduler.scheduled_job('cron', second='*/10')
def job2():
    print('==== this is cron scheduled_job ====')

scheduler.start()
阻塞和非阻塞
  • APScheduler提供了阻塞和非阻塞两种调度器类型,BackgroundScheduler和BlockingScheduler,是两种类型 常用 的调度器,用于创建定时任务。
  • 主要区别:BackgroundScheduler在后台运行,不会阻塞主线程;而BlockingScheduler会阻塞主线程直到所有任务完成。

BackgroundScheduler例子

from apscheduler.schedulers.background import BackgroundScheduler
import time


def job():
    print('job 3s')

if __name__=='__main__':

    # BackgroundScheduler调用start函数后并不会阻塞当前线程,所以可以继续执行主程序中while循环的逻辑。
    sched = BackgroundScheduler(timezone='MST')
    sched.add_job(job, 'interval', id='3_second_job', seconds=3)
    sched.start()

    while(True):  # while会被执行
        print('main 1s')
        time.sleep(1)

BlockingScheduler例子:

from apscheduler.schedulers.blocking import BlockingScheduler
import time

def job():
    print('job 3s')

if __name__=='__main__':

    sched = BlockingScheduler(timezone='MST')
    sched.add_job(job, 'interval', id='3_second_job', seconds=3)
    sched.start()

    while(True): # 不会被执行到
        print('main 1s')
        time.sleep(1)

标签:__,int,python,调度,apscheduler,job,str,定时,BlockingScheduler
From: https://www.cnblogs.com/lanjianhua/p/18372327

相关文章

  • python 计算list的方差
    python计算list的方差 importnumpyasnp#假设我们有一个包含数值的列表data=[1,2,3,4,5]#计算均值mean=np.mean(data)#计算方差variance=np.var(data)#这将使用默认的N-1作为分母(样本方差)#如果你想要总体方差(使用N作为分母),可以传入ddof=0#var......
  • 使用Python+os模块创建文件和文件夹
    一、使用Python的open函数创建文件#创建文件withopen('/home/Download/my_directory/my_file.txt','w')asf:f.write('世界你好') open(name[,mode[,buffering]])参数详解name:一个包含了你要访问的文件名称的字符串值。mode:mode决定了打开文件的模......
  • python flask 定时器
    安装pipinstallflaskpipinstallflask_apscheduler-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.tuna.tsinghua.edu.cn使用方法一:使用Config类配置时间规则fromflaskimportFlaskfromflask_apschedulerimportAPSchedulerclassC......
  • 《Python数据分析实战》
    环境搭建定义变量名时要遵循的规则:变量名必须以字母或下画线开始,名字中间只能由字母、数字和下画线组成长度不能超过255个字符变量名在有效范围内必须具有唯一性不能使用保留字(关键字)区分大小写不能对元组中的元素做修改,只能做切片查询。如果元组中只有1个元素,则需要在这......
  • 【有源码】大数据背景下基于Python的旅游数据可视化分析与推荐系统k-means满意度分析
    注意:该项目只展示部分功能,如需了解,文末咨询即可。本文目录1.开发环境2系统设计2.1设计背景2.2设计内容3系统页面展示3.1展示页面3.2功能展示视频4更多推荐5部分功能代码5.1爬虫代码5.2词云代码1.开发环境开发语言:Python技术:Flask、协同过滤算法数......
  • 25:Python文件操作
    #文件,读取#f.flush()将文件内容从内存刷到硬盘#f.closed文件如果关闭则返回True#f.encoding查看使用open打开文件的编码#f.tell()查看文件处理当前的光标位置#f.seek(3)从开头开始数,将光标移动到第三个字节#f.truncate(10)从开头开始算,将文件只保留从0-10个......
  • 基于python+flask框架的校园失物招领系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在繁忙的校园生活中,学生们因疏忽大意或急于赶时间而遗失物品的情况时有发生。传统的失物招领方式往往依赖于公告板、校园广播或口口相传,这......
  • 基于python+flask框架的培训机构信息管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育行业的蓬勃发展,培训机构作为教育体系中的重要组成部分,其规模与数量日益增加。然而,传统的人工管理模式已难以满足培训机构高效运营......
  • 基于python+flask框架的翼城县土特产合作社管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景翼城县,以其丰富的自然资源和独特的地理环境,孕育了众多优质的土特产品,成为地方经济发展的重要支柱。然而,传统土特产的生产与销售模式往往受......
  • Python自动化脚本学习整理
     10个常用Python自动化脚本https://blog.csdn.net/csdn1561168266/article/details/135757528?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172422930716800184162692%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1724229307168......