【发布时间】:2021-11-13 22:14:27
【问题描述】:
我是使用 python 的新手,我有一个包含 3 个函数的 python 代码。我想在每 X 秒后运行这三个函数。我正在使用 APScheduler 包和 add_job 方法。当我为一个函数实现时,我看到一条警告消息说“已跳过:已达到最大运行实例数 (1)”。那么,当我使用 add_job 方法调度所有三个函数时会发生什么?
代码看起来像这样
scheduler1 = APScheduler()
scheduler2 = APScheduler()
scheduler3 = APScheduler()
def fun1():
print("From Func1")
def fun2():
print("From Func2")
def fun3():
print("From Func3")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=5)
scheduler.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=5)
scheduler.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=5)
scheduler.start()
使用上述类型的代码,我能否实现一个调度器在后台运行三个作业,并且所有这些作业每 5 秒运行一次?
【问题讨论】:
-
为所有工作提供相同的 ID 看起来不正确。
-
好的,警告消息“已跳过:已达到最大运行实例数 (1)”怎么样。这样好吗?我想知道这是否是安排函数每 5 秒运行一次的正确方法
-
你有三个调度器。你只需要一个。创建一个调度程序,将每个作业添加到该调度程序,然后使用
scheduler.start()启动它。每次添加作业时无需运行 start,只需在最后执行即可。 -
同样,此时,您的程序将在三个任务启动后结束。在末尾添加一个
while True循环,其中包含time.sleep(1),以保持代码运行。 -
@George 查看我对该答案的评论,和/或查看其他答案。
标签: python scheduled-tasks scheduling