【发布时间】:2020-04-07 18:40:15
【问题描述】:
我的 nodeJS 服务器(React 应用程序的一部分)上有 cron 作业服务,我使用 Convox 将其部署到 AWS,它有 4 个负载均衡器服务器。这意味着我的 cron 作业在每台服务器上同时运行 4 次,而我只希望它运行一次。如何阻止这种情况发生并让我的 cron 作业只运行一次?据我所知,没有可靠的方法将我的 cron 锁定到特定实例,因为实例是易变的,可能会根据需要删除/重新创建。
cron 作业服务执行诸如查询和更新我们的数据库、向用户发送电子邮件和文本以及执行外部 API 调用等任务。这些服务在服务器启动时使用cron npm 包运行(在server.listen 之后)。
【问题讨论】:
-
了解更多关于此作业是什么、需要同步的内容以及您如何运行它的信息?您始终可以使用原子数据库或 Zookeeper 之类的东西进行锁定,但这可能不是必需的,具体取决于您要执行的操作。
-
@Brad 我已经更新了原版,说明我们的 cron 工作是做什么的
-
你能通过url公开这些任务吗?这样,您就可以拥有一个通过 url 请求每个作业的外部 cron 服务器。见cron-job.org/en
标签: node.js amazon-web-services cron backend convox