Ich bin neu in APScheduler
Zum Testen habe ich max_worker=2
eingestellt und 4 verschiedene Jobs zum Scheduler hinzugefügt. Ich beabsichtigte, zwei Jobs parallel laufen zu lassen, weil der Threadpool begrenzt war. Ich dachte, dass nach dem Abschluss eines bestimmten Jobs ein neuer Job in Threadpool geworfen wird, aber das Ergebnis ist nicht das, was ich erwartet habe.So fügen Sie Jobs zum Threadpool mit APScheduler hinzu
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
...
Und hier ist der Code:
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
Alle Möglichkeiten verbleibenden Arbeitsplätze in den thread oder Schema etwas wie Warteschlange oder multiprocessing.dummy.pool