【问题标题】:Running resque without Rakefile在没有 Rakefile 的情况下运行 resque
【发布时间】:2016-12-29 06:06:44
【问题描述】:

我已经构建了自己的作业服务器,它本质上是一个私有 gem,构建为 resque 的包装器。

(我没有在 Rails 环境中运行它)

我所看到的任何地方,似乎记录/推荐的启动工作人员的方式是这样的:

$ QUEUE=* rake resque:work

这意味着它必须在Rakefile存在的文件夹中执行。

我正在寻找一种无需 Rakefile 即可启动它的方法。

到目前为止我学到了什么:

  • 我看过issues,可能有人问过类似的问题。
  • 我查看了wiki,特别是FAQ
  • 我知道,通过分析tasks file,我可以创建自己的“bin”以在不使用 rake 的情况下运行它。
  • 我看到 resque 安装了一个 resque 二进制文件,但它似乎只提供有限的功能,例如删除和列出工作人员,而不是启动。
  • 我目前的解决方法是,我的 gem 的二进制文件在运行之前对 gem 的文件夹执行 chdir(并且此文件夹有一个 Rakefile),如下面的代码。

def start_worker
  ENV['QUEUE'] = '*'
  Dir.chdir gemdir do
    exec "rake resque:work"
  end
end

def gemdir
  File.expand_path "../../", __dir__
end

感谢任何朝着正确方向的推动。

【问题讨论】:

    标签: ruby resque


    【解决方案1】:

    我为此制定的当前解决方案:

    def start_worker
      interval = 5
      queue = '*'
    
      ENV['QUEUE'] = queue
      worker = Resque::Worker.new
      Resque.logger = Logger.new STDOUT
      Resque.logger.level = Logger::INFO
    
      ## this is not yet implemented in 1.26.0, keeping here as a reminder
      # worker.prepare  
    
      worker.log "Starting worker"
      worker.work interval
    end
    

    这是code from the rake task的改编版

    作为参考,我还开了一个github issue,以防其他人也需要这样的功能。

    【讨论】:

      【解决方案2】:

      我创建了一个脚本来使用以下工作启动 API 创建恶魔工作进程。

      def start_worker(id)
        ENV['QUEUE'] = @queues || "*"
        ENV['PIDFILE'] = pid_file(id)
        ENV['JOBS_PER_FORK'] = @jobs_per_fork || "1000"
        ENV['BACKGROUND'] = 'true'
        ENV['TERM_CHILD'] = 'true'
        @debug ? ENV['VVERBOSE'] = 'true' : ENV['VERBOSE'] = 'true'
      
        begin
          worker = Resque::Worker.new
        rescue Resque::NoQueueError
          Resque.logger.error "No queue is set for worker_id = #{id}"
        end
      
        worker.prepare
        worker.log "Starting worker #{self}"
        worker.work(5) # interval, will block
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 2020-08-23
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多