【发布时间】:2022-01-08 11:14:21
【问题描述】:
我正在尝试与 Apscheduler 合作以按顺序运行 3 个任务,但我在弄清楚如何在整个周期完成之前防止任务重叠时遇到了挑战。
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def my_interval_job1():
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print ("interval job 1 --- {}".format(t))
def my_interval_job2():
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print ("interval job 2 --- {}".format(t))
def my_interval_job3():
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print ("interval job 3 --- {}".format(t))
def myScheduler():
scheduler = BlockingScheduler({'apscheduler.timezone': 'UTC'})
scheduler.add_job(my_interval_job1, 'interval', id='my_job_id1', seconds=5)
scheduler.add_job(my_interval_job2, 'interval', id='my_job_id2', seconds=10)
scheduler.add_job(my_interval_job3, 'interval', id='my_job_id3', seconds=15)
try:
scheduler.start()
except KeyboardInterrupt:
scheduler.shutdown()
myScheduler()
我的输出是这样的:
interval job 1 --- 2022-01-08 13:59:43
interval job 1 --- 2022-01-08 13:59:48
interval job 2 --- 2022-01-08 13:59:48
interval job 1 --- 2022-01-08 13:59:53
interval job 3 --- 2022-01-08 13:59:53
interval job 1 --- 2022-01-08 13:59:58
interval job 2 --- 2022-01-08 13:59:58
interval job 1 --- 2022-01-08 14:00:03
interval job 1 --- 2022-01-08 14:00:08
interval job 2 --- 2022-01-08 14:00:08
interval job 3 --- 2022-01-08 14:00:08
interval job 1 --- 2022-01-08 14:00:13
如何有效地循环三个任务并获得如下输出:
------ Sleep (5secs)------
interval job 1 --- 2022-01-08 13:59:43
------ Sleep (10secs)------
interval job 2 --- 2022-01-08 13:59:53
------ Sleep (15secs)------
interval job 3 --- 2022-01-08 14:00:08
------ Sleep (30secs)------
------ Sleep (5secs)------
interval job 1 --- 2022-01-08 14:00:43
------ Sleep (10secs)------
interval job 2 --- 2022-01-08 14:00:53
------ Sleep (15secs)------
interval job 3 --- 2022-01-08 14:01:08
等等……
【问题讨论】:
-
如果您需要按顺序运行它们,为什么不将它们放在一个计划的作业中?
-
@AlexGrönholm 一些代码说明您的意思将不胜感激。
标签: python loops cron-task apscheduler