python 作业太多时 apscheduler 不一致 运行
python apscheduler not consistent when there are too many jobs running
我正在使用 python apscheduler.scheduler 的调度程序,并且在我的项目中,有太多作业 运行,但机器负载不是太高,之后去通过文档,我找到了解决方案,我必须增加线程的大小,但我不知道,如何增加线程
我的语法:
scheduler.add_interval_job(triggerTask, interval_time, args=[], misfire_grace_time = None)
scheduler.add_cron_job(triggerTask, interval_time, args=[], misfire_grace_time = None)
由于您有 90 个任务要 运行,您可能需要增加线程数,如果它们对计算敏感,您还应该使用 ProcessPoolExecutor
:
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.schedulers.background import BackgroundScheduler
executors = {
'default': ThreadPoolExecutor(90), # max threads: 90
'processpool': ProcessPoolExecutor(20) # max processes 20
}
scheduler = BackgroundScheduler(executors=executors)
scheduler
会默认使用default
执行器,你可以通过scheduler.add_interval_job(triggerTask, interval_time, executor="<executor's name>")
.
指定执行器
我正在使用 python apscheduler.scheduler 的调度程序,并且在我的项目中,有太多作业 运行,但机器负载不是太高,之后去通过文档,我找到了解决方案,我必须增加线程的大小,但我不知道,如何增加线程 我的语法:
scheduler.add_interval_job(triggerTask, interval_time, args=[], misfire_grace_time = None)
scheduler.add_cron_job(triggerTask, interval_time, args=[], misfire_grace_time = None)
由于您有 90 个任务要 运行,您可能需要增加线程数,如果它们对计算敏感,您还应该使用 ProcessPoolExecutor
:
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.schedulers.background import BackgroundScheduler
executors = {
'default': ThreadPoolExecutor(90), # max threads: 90
'processpool': ProcessPoolExecutor(20) # max processes 20
}
scheduler = BackgroundScheduler(executors=executors)
scheduler
会默认使用default
执行器,你可以通过scheduler.add_interval_job(triggerTask, interval_time, executor="<executor's name>")
.