首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重启Sidekiq

重启Sidekiq
EN

Stack Overflow用户
提问于 2013-01-16 01:50:52
回答 1查看 16.5K关注 0票数 17

重启sidekiq的正确方法是什么?当我启动它时,它似乎缓存了我的工作者的代码,所以每次我对我的工作者进行更改时,我都需要重新启动它。我正在使用Ctrl/C执行此操作,但该过程需要很长时间才能结束并返回到提示。

有没有办法强制重启并立即生效?

我使用的是通过POW运行的Sinatra的最新版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-16 07:23:36

Sidekiq附带了sidekiqctl命令,该命令可以停止与Sidekiq进程相关的PID。传入PID文件和等待所有线程完成的秒数。

示例用法:

代码语言:javascript
复制
sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60

这里,60表示等待所有Sidekiq线程完成处理的秒数。如果60秒过去了,而且还没有全部完成,它们会被自动杀死。

我还推荐使用上帝的gem来监控、停止、启动和重启Sidekiq。

一旦你这样做了,你可以使用bundle exec上帝停止来停止所有的sidekiq线程。

以下是我的上帝文件,作为示例:

代码语言:javascript
复制
rails_env = ENV['RAILS_ENV'] || "development"
rails_root = ENV['RAILS_ROOT'] || "/home/hwc218/BuzzSumo"
 God.watch do |w|
     w.dir      = "#{rails_root}"
     w.name     = "website_crawler"
     w.interval = 30.seconds
     w.env      = {"RAILS_ENV" => rails_env}
     w.interval = 30.seconds
     w.start = "bundle exec sidekiq -C #{rails_root}/config/sidekiq_website_crawler.yml"
     w.stop = "sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60"
     w.keepalive


    # determine the state on startup
     w.transition(:init, { true => :up, false => :start }) do |on|
    on.condition(:process_running) do |c|
      c.running = true
    end
    end

     # determine when process has finished starting
      w.transition([:start, :restart], :up) do |on|
      on.condition(:process_running) do |c|
      c.running = true
      c.interval = 5.seconds
    end

      # failsafe
       on.condition(:tries) do |c|
      c.times = 5
      c.transition = :start
      c.interval = 5.seconds
     end
    end

    # start if process is not running
     w.transition(:up, :start) do |on|
    on.condition(:process_running) do |c|
      c.running = false
    end
    end

    w.restart_if do |restart|
        restart.condition(:restart_file_touched) do |c|
          c.interval = 5.seconds
          c.restart_file = File.join(rails_root, 'tmp', 'restart.txt')
        end
    end
 end
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14343715

复制
相关文章

相似问题

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