【发布时间】:2016-03-25 09:59:19
【问题描述】:
假设我们有测试工作:
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)
Job 正在运行,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
为什么没有工作?作业运行成功(我也在 sidekiq 启动的第一个窗口中看到它,但我无法在 rails 控制台中看到并删除它)
如果有帮助,我正在使用 Ubuntu 14
此致,鲁斯兰。
统一更新:
看起来
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)
如何阻止它?
【问题讨论】:
-
不,作业正在 100% 运行
标签: ruby-on-rails ruby ruby-on-rails-4 sidekiq rails-activejob