skipped: maximum number of running instances reached (1)

慕尘發表於2024-05-13

Python 的 apscheduler 今天出現

  skipped: maximum number of running instances reached (1)

問題產生的原因:

  設定了大量的任務,而APScheduler無法同時處理所有任務

解決方法:

  調整APScheduler使用的執行緒池大小來增加併發處理任務的能力

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor
from jobs.job import deal_jobs
# 建立排程器
executor = ThreadPoolExecutor(20)
scheduler = BackgroundScheduler(executors={'default': executor})
scheduler.add_job(deal_jobs, 'interval', seconds=20)
# 啟動排程器
scheduler.start()

合理設定任務的執行時間

如果任務執行時間過長,會出現等待任務完成,而無法處理其他任務

可以將執行時間長的任務分解,分解為多個子任務,並分配到多個排程器中,每個排程器只需處理一部分子任務,這樣可以提高整體的任務併發效能

相關文章