""" Async Engine 独立进程入口 ========================= usage: python -m app.scheduler.main """ import asyncio import logging import sys from app.scheduler.engine import AsyncEngine from app.scheduler.handlers.avatar_handler import AvatarHandler from app.scheduler.handlers.copy_handler import CopyHandler from app.scheduler.handlers.image_handler import ImageHandler from app.scheduler.handlers.script_handler import ScriptHandler from app.scheduler.handlers.subtitle_handler import SubtitleHandler from app.scheduler.handlers.video_handler import VideoHandler logger = logging.getLogger("scheduler") def setup_logging() -> None: log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" logging.basicConfig( level=logging.INFO, format=log_format, handlers=[logging.StreamHandler(sys.stdout)], ) async def main() -> None: setup_logging() engine = AsyncEngine() engine.register(VideoHandler()) engine.register(AvatarHandler()) engine.register(ImageHandler()) engine.register(SubtitleHandler()) engine.register(CopyHandler()) engine.register(ScriptHandler()) await engine.run_forever(interval=10.0, min_interval=2.0) if __name__ == "__main__": try: asyncio.run(main()) except KeyboardInterrupt: logger.info("Scheduler stopped by user")