重复的 cron 进程-python pm2

重复的 cron 进程-python pm2

我们的设置包括在 AWS EC2 上部署具有自动扩展功能的 Python Flask 应用程序,并且它使用 MySQL 数据库。

我们还在单独的 Linux 系统上安排了作业,每 10 秒触发一次,到达 API 端点https://api.example.com
该应用程序在 pm2 下运行。

最近,我们遇到了这些计划作业导致的数据重复问题。尽管 cron 作业已正确设置为每 10 秒执行一次,但我们观察到同一作业同时运行的情况,间隔仅几微秒。启用 API 日志后,我们确认了这些情况。

这些作业按计划每 10 秒访问一次 API URL,但它们却同时执行,这让人感到困惑。我们正在寻求有关方法或工具的建议,以帮助我们诊断此问题,以及防止此类作业同时执行的策略。

答案1

运行重复性工作而不检查作业的单一副本,特别是在如此短的时间间隔内,会直接导致麻烦。

您可以做的是测量 API 调用的运行时间并将计划设置为最大间隔。执行检查,以便只有一个作业副本正在运行。如果作业已经运行,您可以将其设置为跳过,并发送某种警报,以便您可以(再次)重新考虑计划的间隔。

当然,你可以组织跳过任务的队列,但这很大程度上取决于任务的性质。而且你可能会面临队列不断增加的风险。

相关内容