配置 APScheduler:
from fastapi import FastAPI
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
import time
import logginglogging.basicConfig(level=logging.INFO)app = FastAPI(routes=None)# 配置 APScheduler
scheduler = BackgroundScheduler({'apscheduler.executors.default': ThreadPoolExecutor(20),'apscheduler.executors.processpool': ProcessPoolExecutor(5),'apscheduler.job_defaults.coalesce': False,'apscheduler.job_defaults.max_instances': 3,'apscheduler.timezone': 'Asia/Shanghai',
})
下面是对每个参数的详细解释:
配置参数详解
apscheduler.executors.default
- 含义:定义默认的执行器。执行器负责实际执行任务。
- 值:
ThreadPoolExecutor(20)
,表示使用一个线程池执行器,最多有 20 个线程。
apscheduler.executors.processpool
- 含义:定义进程池执行器。进程池执行器使用多个进程来执行任务。
- 值:
ProcessPoolExecutor(5)
,表示使用一个进程池执行器,最多有 5 个进程。
apscheduler.job_defaults.coalesce
- 含义:控制是否合并多个连续的任务执行。如果设置为
True
,则当多个任务实例排队时,只会执行最后一个任务实例。 - 值:
False
,表示不合并任务实例,每个任务实例都会被执行。
apscheduler.job_defaults.max_instances
- 含义:控制每个任务的最大实例数。即同一时间可以有多少个相同的任务实例在运行。
- 值:
3
,表示每个任务最多可以同时运行 3 个实例。
apscheduler.timezone
- 含义:设置调度器的时区。这对于定时任务的准确执行非常重要,特别是涉及到具体时间的任务。
- 值:
'Asia/Shanghai'
,表示使用上海时区(东八区)。