gpt4 book ai didi

python - APScheduler 会跳过作业并在其他时间运行

转载 作者:行者123 更新时间:2023-12-03 02:35:07 26 4
gpt4 key购买 nike

我们正在运行 Azure Kubernetes 集群(DEV、TST、PRD 上每个阶段一个),我们需要定期运行多个 Python 脚本,这就是我们使用 APScheduler (3.6.0) 的目的。使用默认的内存作业存储。

然而,几天前,我发现 APScheduler 的行为与预期不同。它发生在所有三个阶段:

  • 自 2020 年 3 月 27 日起,设置为每小时 0 分钟和 30 分钟运行的特定作业已在 21:30 至 00:00 之间停止运行。
  • 同样的作业在奇怪的时间运行,例如经常在 ~:15 和 :45 进行。
  • 作业被跳过,而它们计划每 5 分钟运行一次。日志显示“正在启 Action 业”,但没有说明应有的以下内容:作业“x_job(触发:cron[month='', day='', day_of_week='', hour='', 分钟='0,5,10,15,20,25,30,35,40,45,50,55'],下次运行时间:2020-08-18 10:35:00 UTC)”执行成功。有时会出现两次运行同时触发的情况,但不一定是下一次运行。

已采取步骤但未达到预期结果:

增加process_pool_workers和thread_pool_max_workers的数量并设置misfire_grace_time:

执行者线程池最大 worker 数:50process_pool_max_workers: 20作业默认值job_defaults_coalesce:真job_defaults_max_instances: 3Misfire_grace_time:120

  • 为调度程序和 add_jobs 设置 timezone='UTC'。scheduler = BlockingScheduler(executors=executors, job_defaults=job_defaults, timezone='UTC')Scheduler.add_job(launch_profile_job, CronTrigger.from_crontab(scheduler_config.profile_job), timezone='UTC')

我还检查了集群的资源,但是调度程序的CPU和内存甚至没有接近其极限。我们的平均水平也相当低。事件 pod 数量为 25,即使这也会成为我们的 K8s 集群的问题,自动缩放功能已启用。

这里有人知道可能发生什么吗?

最佳答案

不要使用内存作业存储,而是使用 Redis、mongo 等持久存储,如果您需要在调度程序重新启动或应用程序崩溃时保留作业,则必须选择持久作业存储。

APscheduler 支持以下持久性作业存储。

  • SQLAlchemy
  • MongoDB
  • Redis
  • RethinkDB
  • 动物园管理员

关于python - APScheduler 会跳过作业并在其他时间运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63467197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com