青岛网站建设seo优化,想做个外贸网站,网站设计经典案例欣赏,北京安卓app开发公司在python开发的过程中#xff0c;经常见到小伙伴直接使用while True的死循环sleep的方式来保存程序的一直运行。
这种方式虽然能达到效果#xff0c;但是说不定什么时候就直接崩溃了。并且#xff0c;在Linux环境中在检测到while True的未知进程就会直接干掉。
面对这样的…在python开发的过程中经常见到小伙伴直接使用while True的死循环sleep的方式来保存程序的一直运行。
这种方式虽然能达到效果但是说不定什么时候就直接崩溃了。并且在Linux环境中在检测到while True的未知进程就会直接干掉。
面对这样的业务场景通常可以选择使用定时器的方式来完成况且用法也比较简单。
在python中的定时任务用法通常有sched模块/threading.QTimer模块sched模块在之前的历史文章中有过详细说明。
今天介绍的这个定时模块是某位大佬写的APScheduler定时器框架强烈推荐使用这种方式来完成定时任务的开发。
这里我们开发一个print_datetime函数来打印当前的时间同时也将print_time函数作为我们需要一直保持执行的任务。
# Importing the datetime module.
import datetimedef print_time(messageNone):It prints the current time, optionally preceded by a message.:param message: The message to printprint(message, datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S))然后我们准备需要使用的定时任务模块apscheduler可以选择pip的方式进行安装我个人一直使用的是这样方式。
pip install apscheduler# Importing the BlockingScheduler class from the apscheduler.schedulers.blocking module.
from apscheduler.schedulers.blocking import BlockingScheduler至此我们便可以将需要保持一直处于执行状态的业务函数也就是这里的print_datetime函数作为定时中的任务执行。
如此我们就不用使用while True死循环sleep的方式来使任务一直保存在运行形状了。
# Creating a scheduler object.
scheduler BlockingScheduler()# Adding a job to the scheduler.
scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggercron, second*/1) # 每秒执行# Starting the scheduler in a separate thread.
scheduler.start()最后直接启动当前的.py文件就能直接执行定时任务了运行效果如下。
时间打印定时任务 2023-02-26 13:52:52
时间打印定时任务 2023-02-26 13:52:53
时间打印定时任务 2023-02-26 13:52:54
时间打印定时任务 2023-02-26 13:52:55
时间打印定时任务 2023-02-26 13:52:56
时间打印定时任务 2023-02-26 13:52:57当然作为定时任务的框架apscheduler他还有很多的技能。比如按更复杂的周期执行在有限的时间内执行单点执行等等。
下面是我列出的比较常见的apscheduler定时任务的执行方式供小伙伴们参考提出宝贵意见。
scheduler.add_job(funcprint_time, args(任务只执行一次在下一次的时间执行,),next_run_timedatetime.datetime.now() datetime.timedelta(seconds60))scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggerinterval, seconds5) # 每5秒执行一次
scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggerinterval, minutes2) # 每2分钟执行一次
scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggerinterval, hours1) # 每1小时执行一次scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggercron, minute*, second1) # 每分钟执行一次
scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggercron, hour*, minute0,second0) # 每小时执行一次scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggercron, hour20, minute0,second0) # 每天20:00执行一次
scheduler.add_job(funcprint_time, args(时间打印定时任务,), triggercron, hour21) # 每天21:00执行一次在使用过程中apscheduler模块是最简单的调度类定时任务欢迎小伙伴留言讨论