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()
合理設定任務的執行時間
如果任務執行時間過長,會出現等待任務完成,而無法處理其他任務
可以將執行時間長的任務分解,分解為多個子任務,並分配到多個排程器中,每個排程器只需處理一部分子任務,這樣可以提高整體的任務併發效能