如何解决saltshaker 周期性job定时执行延迟8小时问题 知识

weichk 2月前 80

如题, 由于saltshaker存在一次job定时执行延迟8小时的问题,尝试修改了extensions .py

更改如下:修改了

方法:def _process_jobs(self):
now = datetime.now(.timezone)
now = now + timedelta(=)

更改完成后,单次job定时执行没有问题。

却导致了更尴尬的bug,周期性job执行的时候,例如每隔2分钟运行一次,间隔完全没有起作用,一分钟运行N次。

  • 2019-12-27 08:36:06
    机器人
    完成了Job
  • 2019-12-27 08:36:06
    机器人
    完成了Job
  • 2019-12-27 08:36:06
    机器人
    完成了Job
  • 2019-12-27 08:36:07
    机器人
    完成了Job
  • 2019-12-27 08:36:07
    机器人
    完成了Job
  • 2019-12-27 08:36:07
    机器人
    完成了Job
  • 2019-12-27 08:36:07
    机器人
    完成了Job
  • 2019-12-27 08:36:08
    机器人
    完成了Job


临时修改方式如下:验证过单次定时执行和周期job正常,其余模块影响未知。

#导入pytz库
import pytz
class MutexAPScheduler(APScheduler):
    # 重写APScheduler的构造方法,scheduler对象使用自定义MutexBackgroundScheduler类    def __init__(self):
        APScheduler.__init__(self, scheduler=None, app=None)
        self._scheduler = MutexBackgroundScheduler(jobstores=Config.SCHEDULER_JOBSTORES,   
                                                    executors=Config.SCHEDULER_EXECUTORS,
                                                    job_defaults=Config.SCHEDULER_JOB_DEFAULTS,
                                                    #timezone=utc 
                                                    #解决单次job定时执行晚8小时的问题.  
                                                    timezone=pytz.timezone('Asia/Shanghai'))


最后于 2月前 被weichk编辑 ,原因:
最新回复 (2)
  • saltshaker 2月前
    0 引用 2
    redis的互斥锁还在吗?
  • weichk 2月前
    0 引用 3
    saltshaker redis的互斥锁还在吗?
    互斥锁没看懂...我直接把时区改了,不确定对其他模块又没有影响。
    • 运维开源项目互助社区—致敬开源
      4
        立即登录 立即注册 
返回