【问题标题】:Prevent Cron from running multiple times Rails Loadbalancer防止 Cron 多次运行 Rails Loadbalancer
【发布时间】:2017-10-30 01:14:26
【问题描述】:

我有一个问题,我有一个负载均衡器和我的 Web 应用程序的两个实例,其中 cronjobs 在后台运行。如何在 Rails 中确保 cronjob 在两个实例之间只运行一次?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services cron


    【解决方案1】:

    您需要在两个应用服务器上都有 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
    

    【讨论】:

    • 感谢曼努埃尔的建议。我正在学习拥有一台工作服务器的路线,但我相信因为为了保持两台服务器相同,我们想要一个更好的解决方案,就像你提出的那样。
    猜你喜欢
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2011-04-12
    相关资源
    最近更新 更多