删除sidekiq中以前版本的作业

时间:2017-03-08 17:37:34

标签: ruby-on-rails web-deployment sidekiq rake-task faye

我有一个漫长而永无止境的工作,即应该始终保持运行的rake任务。 (它是服务器端一直在监听的faye pub-sub客户端)。当应用程序部署在服务器上时,作业已创建并正常工作,但问题就是这样,旧作业不会在每个新构建中被杀死,因此当我第二次部署时,有2个作业。我经历了sidekiq api,我们可以通过查找工作人员来停止队列中的所有作业,但是在同一台服务器上运行其他应用程序,如果我删除所有繁忙的作业,我可能最终会影响其他应用程序。

  

这是我的工作人员   应用程序/工人/ subscriber.rb

    require 'rake'
    Rake::Task.clear
    Faye::Application.load_tasks
    class Subscriber
      include Sidekiq::Worker
      def perform
        Rake::Task['faye:subscriber'].invoke"
      end
end
  

这是我的初始化程序/ sidekiq.rb

Sidekiq.configure_server do |config| 
    config.redis = { url: 'redis://localhost:6379' }
end

Sidekiq.configure_client do |config|
    config.redis = { url: 'redis://localhost:6379' } 
    Rails.application.config.after_initialize do
        Subscriber.perform_async
    end
end

有什么解决方案吗?还是我朝错误的方向走?任何帮助将不胜感激。谢谢你:))

1 个答案:

答案 0 :(得分:0)

你走向错误的方向。 Sidekiq不适合永久或不断运行的工作。从rake任务中创建一个合适的服务。