如何使用 ActiveJob 终止 Rails 4 中的 sidekiq 作业
How to kill sidekiq job in Rails 4 with ActiveJob
假设我们有测试工作:
class TestJob < ActiveJob::Base
queue_as :default
def perform(video)
video.process
end
end
之后我们运行bundle exec sidekiq start
和运行在新终端window在rails控制台
Video.first.pending!; TestJob.perform_later(Video.first)
作业 运行ning,ffmpeg 在后台运行,一切正常,但根据 official sidekiq wiki docs 我尝试:
require 'sidekiq/api'
Sidekiq::Queue.new
=> #<Sidekiq::Queue:0x00000006406978 @name="default", @rname="queue:default">
Sidekiq::Queue.new.each {|job| puts job}
=> nil
Sidekiq::Queue.new.size
=> 0
ss = Sidekiq::ScheduledSet.new
=> #<Sidekiq::ScheduledSet:0x000000064a4330 @_size=0, @name="schedule">
ss.size
=> 0
为什么没有职位?作业 运行ning 成功(我也在第一个 window sidekiq 启动的地方看到它,但我无法在 rails 控制台中看到和删除它)
如果有帮助,我正在使用 Ubuntu 14
此致,Ruslan。
更新:
看起来
ps = Sidekiq::ProcessSet.new; ps.each(&:quiet!)
作品
,但它并没有阻止我的 ffmpeg 处理这部分内部代码:
cmd = "ffmpeg -i #{input_file.shellescape} #{options} -threads 0 -y #{self.path + outfile}"
pid = spawn(cmd, :out => output_file, :err => output_file)
Process.wait(pid)
如何停止?
如果作业正在处理,则不再排队。
我使用 sidekiq web UI 和各种队列来处理我的工作。如果我意识到特定作业失败,我可以清除相同 class 的后续作业队列。
假设我们有测试工作:
class TestJob < ActiveJob::Base
queue_as :default
def perform(video)
video.process
end
end
之后我们运行bundle exec sidekiq start
和运行在新终端window在rails控制台
Video.first.pending!; TestJob.perform_later(Video.first)
作业 运行ning,ffmpeg 在后台运行,一切正常,但根据 official sidekiq wiki docs 我尝试:
require 'sidekiq/api'
Sidekiq::Queue.new
=> #<Sidekiq::Queue:0x00000006406978 @name="default", @rname="queue:default">
Sidekiq::Queue.new.each {|job| puts job}
=> nil
Sidekiq::Queue.new.size
=> 0
ss = Sidekiq::ScheduledSet.new
=> #<Sidekiq::ScheduledSet:0x000000064a4330 @_size=0, @name="schedule">
ss.size
=> 0
为什么没有职位?作业 运行ning 成功(我也在第一个 window sidekiq 启动的地方看到它,但我无法在 rails 控制台中看到和删除它)
如果有帮助,我正在使用 Ubuntu 14
此致,Ruslan。
更新:
看起来
ps = Sidekiq::ProcessSet.new; ps.each(&:quiet!)
作品
,但它并没有阻止我的 ffmpeg 处理这部分内部代码:
cmd = "ffmpeg -i #{input_file.shellescape} #{options} -threads 0 -y #{self.path + outfile}"
pid = spawn(cmd, :out => output_file, :err => output_file)
Process.wait(pid)
如何停止?
如果作业正在处理,则不再排队。
我使用 sidekiq web UI 和各种队列来处理我的工作。如果我意识到特定作业失败,我可以清除相同 class 的后续作业队列。