【发布时间】:2017-07-29 10:11:40
【问题描述】:
我有一个漫长且永无止境的工作,即应该一直运行的 rake 任务。 (这是 faye pub-sub 客户端一直在等待服务器端监听)。当应用程序部署在服务器上时,该作业被创建并工作,但这里的 问题 是,旧作业不会在每个新版本中被杀死,所以当我第二次部署时.. 有 2 个作业.我通过了 sidekiq api,我们可以通过查找 worker 来停止队列中的所有作业,但是在同一台服务器上还有其他应用程序正在运行,如果我删除所有繁忙的作业,我最终可能会影响其他应用程序。
这是我的工人 app/workers/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
有什么解决办法吗?还是我走错了方向?任何帮助将不胜感激。谢谢你:)
【问题讨论】:
标签: ruby-on-rails web-deployment sidekiq rake-task faye