【问题标题】:Clock work restart a job after a few minutes in rails时钟工作在 Rails 中几分钟后重新开始工作
【发布时间】:2017-12-01 19:08:32
【问题描述】:

我正在使用 Clock worker gem 进行后台进程

我有一个包含键和值的配置表。

我的clock.rb文件

require 'clockwork'
require './config/boot'
require './config/environment'
module Clockwork
  handler do |job|  
    puts "Running #{job}" 
  end

  time = Configuration.find_by(:key=>"time") 
  if time.present?
    min = time.value.to_i     
    every(min.minutes, 'calculate user details') { 
           User.calculate_time}    
  end
end

运行worker时:config/clock.rb

这可以正常工作,但是当我从配置更改时间时, 如果不重启时钟工作文件,worker 将如何工作??

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5 clockwork


    【解决方案1】:

    我能想到:

    module Clockwork
      GET_TIME = -> { Configuration.find_by(key: "time") }
      SETTINGS = { time: GET_TIME.() }
      every(1.minutes, 'reset settings') do 
        Clockwork::SETTINGS[:time] = Clockwork::GET_TIME.()
      end
    
      handler do |job|  
        puts "Running #{job}" 
      end
    
      if SETTINGS[:time].present?
        min = SETTINGS[:time].value.to_i     
        every(min.minutes, 'calculate user details') do
          User.calculate_time
        end
      end
    end
    

    【讨论】:

    • 表示Configuration缓存配置。您应该找到一种方法来强制它重新加载配置。
    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多