← 返回科技数码

科技数码

调度任务持久化与重复执行处理

创建时间:2026年10月12日 20:40:00用户昵称:小事

python 调度器任务持久化:进行持久化后进程重启后恢复调度、动态任务不丢失,scheduler存储任务有两种方式,使用RedisJobStore、SQLAIchemyJobStore,它们都是在apscheduler.jobstore中引入,RedisJobStore可以通过default属性配置host、job_key、runtime_key,SQLAIchemyJobStore与业务库同库,这种方式配置的选项更多,但也更复杂…可以使用调度器做预约任务…很容易出错的一个点:多实例部署去重出错,一个任务可能在不同的实例中跑n遍,会造成一个日志发n遍,对账可能跑n遍,重复进行多次…多实例部署去重可以用四种方式解决:独立调度进程,调度器单独部署到一个进程,最简单可靠,但是需要单独部署一个单元;使用分布式锁,执行之前抢redis锁,抢不到就跳过,无需改逻辑,将锁架构侵入到任务中;如果项目使用的是celery可以使用Celery Beat,Beat单实例调度+Celery执行;数据库JobStore+锁,这种方式是半官方方案很复杂,使用SQLAIchemy store行级锁实现…