【python】BlockingScheduler 定时任务的一些使用场景
1.案例
1.1 定时循环任务
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
首先看看周一到周六 白天定时执行任务
from apscheduler.schedulers.blocking import BlockingScheduler
def sayHello():
print('hello!')
def sayHello2():
print('hello22!')
if __name__ == '__main__':
print("正在运行中..")
scheduler = BlockingScheduler(timezone='Asia/Shanghai')
# 周一到周六,早上九点到下午六点,每小时的零一分,汇报一次
scheduler.add_job(sayHello, "cron", day_of_week="0-5", hour="9-18", minute=1)
scheduler.start()
# 周一到周五,早上九点到中午十二点,下午两点到下午六点,每小时的零一分,汇报一次
scheduler.add_job(sayHello, "cron", day_of_week="0-4", hour="9-12,14-28", minute=1)
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def job_function():
print("Hello World")
sched = BlockingScheduler()
# Schedule job_function to be called every two hours
sched.add_job(job_function, 'interval', hours=2)
sched.start()
1.2 定时任务的修改、暂停和恢复
修改定时任务myfunA的时间。
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def funA():
print("{},AAAAAAAAAAAAAAA".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
def funB():
print("{},BBBBBBBBBBBBBBB".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
scheduler.reschedule_job(job_id="myfunA",trigger="interval", seconds=3) #修改任务时间,测试完成
if __name__ == '__main__':
print("定时小程序 正在运行中... ")
scheduler = BlockingScheduler(timezone='Asia/Shanghai')
scheduler.add_job(funA, "interval", seconds=1,id='myfunA') #此处的id是自定义的
scheduler.add_job(funB, "interval", seconds=5,id='myfunB')
scheduler.start()
定时任务的暂停和恢复
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def funA():
print("{},AAAAAAAAAAAAAAA".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
def funB():
print("{},BBBBBBBBBBBBBBB".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
# scheduler.reschedule_job(job_id="myfunA",trigger="interval", seconds=3) #修改任务时间,测试完成
scheduler.pause_job(job_id="myfunA")
scheduler.print_jobs(jobstore=None)
time.sleep(3)
scheduler.resume_job(job_id="myfunA")
scheduler.print_jobs()
if __name__ == '__main__':
print("定时小程序 正在运行中... ")
scheduler = BlockingScheduler(timezone='Asia/Shanghai')
scheduler.add_job(funA, "interval", seconds=1,id='myfunA') #此处的id是自定义的
scheduler.add_job(funB, "interval", seconds=5,id='myfunB')
scheduler.start()