【发布时间】:2017-10-30 01:14:26
【问题描述】:
我有一个问题,我有一个负载均衡器和我的 Web 应用程序的两个实例,其中 cronjobs 在后台运行。如何在 Rails 中确保 cronjob 在两个实例之间只运行一次?
【问题讨论】:
标签: ruby-on-rails amazon-web-services cron
我有一个问题,我有一个负载均衡器和我的 Web 应用程序的两个实例,其中 cronjobs 在后台运行。如何在 Rails 中确保 cronjob 在两个实例之间只运行一次?
【问题讨论】:
标签: ruby-on-rails amazon-web-services cron
您需要在两个应用服务器上都有 cron 吗?为什么不只拥有一台工作服务器?
如果您不能只拥有一台运行作业的服务器,您可以将一个值保存到数据库中,指示作业是否已运行,然后在执行作业之前查看该值,例如:
class BackgroundJob
def perform
return if performed_today?
JobRun.create!(performed_on: Date.today)
# Perform the job here
end
private
def performed_today?
JobRun.where(performed_on: Date.today).exists?
end
end
【讨论】: