我的nodeJS服务器(React应用程序的一部分)上有cron作业服务,我使用Convox将其部署到AWS,它有4个负载均衡器服务器。这意味着我的 cron 作业在每台服务器上同时运行 4 次,而我只希望它运行一次。我怎样才能阻止这种情况发生并让我的 cron 作业只运行一次?据我所知,没有可靠的方法将我的 cron 锁定到特定实例,因为实例是不稳定的,并且可以根据需要删除/重新创建。
cron 作业服务执行诸如查询和更新数据库、向用户发送电子邮件和文本以及执行外部 API 调用等任务。这些服务使用 cron 运行npm 包,在服务器启动时(在 server.listen
之后)。
最佳答案
你能通过url公开这些任务吗?这样,您就可以拥有一个外部 cron 服务,通过 url 针对 ELB 请求每个作业。
此方法的另一个优点是,如果网址不返回 200 状态,您会收到错误报告。这可以简化所有作业的错误跟踪。
此外,与运行所有作业的单个实例相比,这还提供了更好的冗余和负载平衡。
关于node.js - NodeJS 服务器上的 Cron 作业由于负载均衡器而同时运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652845/