首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用Rakefile运行resque

不使用Rakefile运行resque
EN

Stack Overflow用户
提问于 2016-08-22 15:47:44
回答 2查看 179关注 0票数 2

我已经构建了自己的作业服务器,它本质上是一个私有的创业板,是围绕雷克构建的包装器。

(我不是在Rails环境中运行这个程序)

在我所看到的任何地方,似乎都有文件记载的/推荐的开始工人的方式,就是这样:

代码语言:javascript
复制
$ QUEUE=* rake resque:work

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

我正在寻找一种方法来开始它没有Rakefile。

到目前为止,我学到的是:

  • 我翻阅了问题,也许有人问了一个类似的问题。
  • 我看过维基,特别是常见问题
  • 我知道,通过分析任务文件,我可能可以创建自己的"bin“来运行它而不需要使用rake。
  • 我看到resque安装了一个resque二进制文件,但它似乎只提供了有限的功能,比如删除和列出一个工作人员,而不是启动。
  • 我目前的解决办法是,我的gem的二进制代码在运行前对gem的文件夹执行chdir (这个文件夹有一个Rakefile),如下所示。
代码语言:javascript
复制
def start_worker
  ENV['QUEUE'] = '*'
  Dir.chdir gemdir do
    exec "rake resque:work"
  end
end

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

感谢你在正确的方向上的任何推动。

EN

回答 2

Stack Overflow用户

发布于 2016-08-23 12:40:12

我现在想出的解决办法是:

代码语言:javascript
复制
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

它是来自rake任务的代码的一种改编

作为参考,我还打开了一个github问题,以避免其他人也需要这样的功能。

票数 0
EN

Stack Overflow用户

发布于 2017-03-18 10:52:57

我已经创建了一个脚本来使用下面的工作者启动API来创建demon进程。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39083764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档