resque 工作线程以静默方式失败,没有日志或没有调试信息



我有一段运行某个方法的代码,我已经把该方法放在self中。

class StartWorker
@queue = :worker
 def self.perform
 puts "hello"
  Parser.find_all_by_class_name("Parser").first.sites.each do |s|
   site = Site.find(s.id)
   parser = Parser.new(site)
   parser.run
     end
     end
     end

如果我评论 def self.execute 并结束并运行该文件,它会正确显示所需的结果,但是当我尝试通过取消注释将其作为后台任务时,它静默地失败到没有显示任何内容的 resque 面板中,并且在命令提示符下也没有输出

我正在从我的 resque_schedule.yml 内的 resque-scheduler 排队

start_worker:
cron: "55 6 * * *"
class: StartWorker
queue: worker
args:
description: "This job starts all the worker jobs"
我尝试在def self.perform方法中放置

一些简单的放置语句,以检查控件是否在方法内部传递,但似乎控件甚至没有在self.perform方法中传递

我也尝试加载轨道环境并要求在其中重新设置,但没有用在进行任何更改之前,我已经为上述所有内容运行了捆绑执行耙 resque:work QUEUE='*' 脚本

我尝试在 rails 控制台内 Resque.info 它显示为这样,

 {:working=>0, :queues=>1, :failed=>1, :environment=>"development", :servers=>["redis://localhost:6379/0"], :pending=>0, :processed=>1, :workers=>1}

任何想法如何克服这一点?

  1. 您是否检查过 resque-web 面板以查看失败的工作是什么?
  2. 确保在进行任何更改后重新启动工作线程。
  3. 如果您在任何地方(特别是日志/worker.log或您的登录位置)的日志中都没有看到"hello",那么该功能根本没有发生。
  4. bundle exec rake resque:work QUEUE='*'应该bundle exec rake resque:work QUEUE=*,以防万一您确实引用了通配符。

为我工作:

Resque::Scheduler.configure do |c|
  c.verbose = Rails.env.development? # or just true
end

红宝石: 3.0.3 ,风格: 2.2.0 ,Resque-Scheduler 4.5.0 ,导轨:6.1.4.4

最新更新