我正在尝试确保在同一个调度程序中一次只运行一个作业。例如,我可能会有这样的事情:
def echo_arg(arg):
print 'Going to tell you the arg! The arg is: {0}'.format(arg)
sleep(5)
def main():
scheduler = BlockingScheduler()
for i in range(0, 60):
scheduler.add_job(echo_arg, 'cron', args=[i], second=i, max_instances=1)
scheduler.start()
即使有60个不同的作业,我也希望调度程序能够阻止,直到上一个作业完成。例如,0秒的作业应该使1,2,3和4的运行无效。有没有办法在调度程序本身中执行此操作?
谢谢!
答案 0 :(得分:2)
是的,在只有1个worker的线程池执行器中运行它们。这样就不能同时运行任何工作。
scheduler = BlockingScheduler(executors={'default': ThreadPoolExecutor(1)})
如果作业有重叠的计划,请确保从默认值调整失火宽限时间。