【发布时间】:2016-08-10 03:47:20
【问题描述】:
我是 APScheduler 的新手
为了测试,我设置了max_worker=2 并向调度程序添加了 4 个不同的作业。由于线程池的限制,我打算并行运行 2 个作业,我认为在完成某些作业后,另一个添加的作业会投入到线程池中,但下面的结果不是我所期望的,它只是继续运行前 2 个作业。
Arg is 1, time is Mon Apr 18 19:51:33 2016
Arg is 2, time is Mon Apr 18 19:51:33 2016
No handlers could be found for logger "apscheduler.scheduler"
Arg is 1, time is Mon Apr 18 19:51:37 2016
Arg is 2, time is Mon Apr 18 19:51:37 2016
Arg is 1, time is Mon Apr 18 19:51:41 2016
Arg is 2, time is Mon Apr 18 19:51:41 2016
Arg is 1, time is Mon Apr 18 19:51:45 2016
Arg is 2, time is Mon Apr 18 19:51:45 2016
...
这里是代码:
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def job(arg):
print 'Arg is %s, time is %s' % (arg, time.ctime())
time.sleep(2)
if __name__ == '__main__':
scheduler = BlockingScheduler({'apscheduler.executors.default': {'class': 'apscheduler.executors.pool:ThreadPoolExecutor', 'max_workers': '2'}})
scheduler.add_job(job, 'interval', seconds=2, args=(1,))
scheduler.add_job(job, 'interval', seconds=2, args=(2,))
scheduler.add_job(job, 'interval', seconds=2, args=(3,))
scheduler.add_job(job, 'interval', seconds=2, args=(4,))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass
将剩余作业添加到线程池或队列方案或 multiprocessing.dummy.pool 之类的任何方法
【问题讨论】:
标签: python scheduled-tasks scheduling apscheduler