针对apscheduler的版本问题修改

This commit is contained in:
ccc_dw 2025-12-25 17:44:33 +08:00
parent d0dc596eb3
commit c6480bd144
2 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,52 @@
import logging
from nonebot import get_driver
from nonebot.plugin import PluginMetadata
from nonebot.log import LoguruHandler, logger
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from .config import Config
__plugin_meta__ = PluginMetadata(
name="定时任务",
description="APScheduler 定时任务插件",
usage=(
'声明依赖: `require("nonebot_plugin_apscheduler")\n'
"导入调度器: `from nonebot_plugin_apscheduler import scheduler`\n"
"添加任务: `scheduler.add_job(...)`\n"
),
type="library",
homepage="https://github.com/nonebot/plugin-apscheduler",
config=Config,
supported_adapters=None,
)
driver = get_driver()
global_config = driver.config
plugin_config = Config(**global_config.dict())
scheduler = AsyncIOScheduler()
scheduler.configure(plugin_config.apscheduler_config)
async def _start_scheduler():
if not scheduler.running:
scheduler.start()
logger.opt(colors=True).info("<y>Scheduler Started</y>")
async def _shutdown_scheduler():
if scheduler.running:
scheduler.shutdown()
logger.opt(colors=True).info("<y>Scheduler Shutdown</y>")
if plugin_config.apscheduler_autostart:
driver.on_startup(_start_scheduler)
driver.on_shutdown(_shutdown_scheduler)
aps_logger = logging.getLogger("apscheduler")
aps_logger.setLevel(plugin_config.apscheduler_log_level)
aps_logger.handlers.clear()
aps_logger.addHandler(LoguruHandler())

View File

@ -0,0 +1,13 @@
from pydantic import Field
from pydantic_settings import BaseSettings
class Config(BaseSettings):
apscheduler_autostart: bool = True
apscheduler_log_level: int = 30
apscheduler_config: dict = Field(
default_factory=lambda: {"apscheduler.timezone": "Asia/Shanghai"}
)
class Config:
extra = "ignore"