[英]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
并在Rails控制台的新终端窗口中运行
Video.first.pending!; TestJob.perform_later(Video.first)
作业正在运行,ffmpeg在后台运行,一切都很好,但是根据官方的sidekiq Wiki文档,我尝试:
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
为什么没有工作? 作业运行成功(我在sidekiq启动的第一个窗口中也看到了它,但是在rails控制台中看不到并删除了它)
我正在使用Ubuntu 14,如果有帮助
最好的问候,罗斯兰。
UPD:看来ps = Sidekiq::ProcessSet.new; ps.each(&:quiet!)
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和各种队列。 如果我发现某项特定的作业失败,则可以清除相同类别的后续作业的队列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.