私はAPSchedulerを初めて使用しています
テスト用にmax_worker=2
を設定し、スケジューラに4つの異なるジョブを追加しました。私は、スレッドプールの制限のために2つのジョブを並行して実行しようとしましたが、特定のジョブを終了した後で、追加されたジョブがスレッドプールに投げ込まれると思っていましたが、以下の結果は私が期待したものではありません。APSchedulerでスレッドプールにジョブを追加する方法
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
スレッドプールまたはキュー・スキームのようなものか、いずれかによってスケジュールされた時間を欠場