openspug / spug

开源运维平台:面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。
https://spug.cc
GNU Affero General Public License v3.0
10.14k stars 2.06k forks source link

Bug: 多实例部署的时候,Unix Cron 计划任务会被重复执行 #216

Open zhenxuanxin opened 3 years ago

zhenxuanxin commented 3 years ago

Spug 版本:

操作系统:Linux-3.10.0-1062.18.1.el7.x86_64-x86_64-with-centos-7.8.2003-Core Python 版本:3.6.8 Django 版本:2.2.13 Spug API版本:v2.3.13 Spug Web版本:v2.3.13

问题重现步骤

  1. 在两台机器上部署系统,并都启动 scheduler 进程;
  2. 添加任务计划,设置触发器为 UNIX Cron,并填写规则执行规则为:0 * * * *;验证过 * * * * * 的规则只会执行一次)

规则截图

  1. 等待下一小时到来后查看任务计划界面中,该项任务的历史记录;

报错/问题截图

在界面上可以看到同一个任务被执行了 2 次。 历史记录

期望的结果

同一个任务应该只被执行一次。

vapao commented 3 years ago

嗯,目前的实现机制是这样的,scheduler 是独立运作并不是个 worker,所以目前还不能同时部署2份,monitor的情况也是类似,我们会考虑改进这个问题,感谢你的反馈。

CarlosEssun commented 3 years ago

可以自定义一个分布式锁(redis hash key),来控制节点任务的执行