定时任务调度系统,分布式定时任务调度框架
python Scheduled scheduler——APScheduler提供基于日期、固定时间间隔和crontab类型的任务,并且可以持久化任务。
APScheduler提供了多种不同的调度器,方便开发者根据实际需要使用;同时,它还提供了不同的存储机制,可以方便地与Redis、数据库等第三方的外部持久化机制协同工作。简而言之,它很强大,很好用。
APScheduler的主要调度类
APScheduler中有几个非常重要的概念需要理解:
触发器(触发器)
包含调度逻辑。每个作业都有自己的触发器,用于决定下一个运行哪个作业。根据触发器中定义的时间点、频率、时间间隔等参数进行设置。触发器是完全无状态的,除了它们自己的初始配置。
作业存储(作业存储)
为了存储计划的作业,默认的作业存储只是将作业保存在内存中,而其他作业存储是将作业保存在数据库中。作业的数据在保存到持久性作业存储时被序列化,在加载时被反序列化。调度程序不能共享同一个作业存储。作业存储支持主流的存储机制:redis、mongodb、关系数据库、内存等。
遗嘱执行人(执行者)
处理作业的操作时,他们通常是通过将作业中指定的可调用对象提交给线程或提交到城市中来完成的。当作业完成时,执行器将通知调度程序。基于池操作,cpu计算资源可以更有效地用于不同类型的作业任务。
调度程序(调度程序)
通常,应用程序中只有一个调度程序,调度程序提供了一个合适的接口来处理这些。可以在调度器中配置作业存储和执行器,例如添加、修改和删除作业。
以下是一些常用调度程序的简要列表:
BlockingScheduler:只能在当前进程中使用,以便与当前进程共享计算资源。BackgroundScheduler:在后台运行计划不会影响当前的系统计算操作。AsyncIOScheduler:如果当前系统使用async模块,那么你需要使用异步调度程序geventScheduler:如果使用Gevent,你需要使用这个调度程序TornadoScheduler:如果使用Tornado,你需要使用当前调度程序Twisted Scheduler:Scheduler Qt Scheduler for Twister应用程序:Scheduler blocking Scheduler for Qt:它适合于在一个进程中只运行单个任务,通常在调度程序是你唯一想运行的东西时使用。BackgroundScheduler:适用于任何需要程序在后台运行的情况,当希望调度程序在应用程序后台执行时使用。AsyncIOScheduler:适合使用asyncio框架。geventScheduler:适合使用Gevent框架。TornadoScheduler:适合使用Tornado框架。TwistedScheduler:适合使用扭曲框架。QtScheduler:适用于使用QT时,调用add_job()中的触发参数,有三个值:interval,day,cron。
日期:触发任务运行的特定日期。
Interval:触发任务运行的时间间隔。
Cron周期:触发任务运行的周期。
触发器date
在特定时间点触发,只执行一次。参数如下:
定时任务:修改创建时间超过100秒的文件的文件名。
可以使用
导入时间导入日期时间导入OS from date util。解析器导入解析器定义时间戳2 time(时间戳):time struct=time。本地时间(时间戳)返回时间。strftime( % Y-% M-% d % H:% M:% S ,timestruct)定义作业(Path,now _ time):files=OS。文件中文件的listdir(路径): if file。结尾为(.txt ):file Path=Path file try:t=OS。路径。getctime(文件路径)creat _ filetime=timestamp 2 time(t)a=parser(now _ time)b=parser(creat _ filetime)time _ diff=(a-b).total _ seconds()if time _ diff/1001:try:new _ filename=文件路径[:4] .json os.rename(filepath,new _ filename)except:print( rename fail )except:print(file path, is not exist!)if _ _ name _ _= _ _ main _ _ :Path= D:/data/images/ while True:now _ time=datetime。日期时间。现在().strftime(%Y-%m-%d %H:%M:%S )作业(路径,现在时间)时间。睡眠(10)https://www . cn blogs . com/BlueSkyyj/p/11678665 . html