redis Resque worker无提示地失败,没有日志或调试信息

t0ybt7op  于 2023-11-16  发布在  Redis
关注(0)|答案(2)|浏览(165)

我有一段代码,它运行一些方法,我把这个方法放在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. perform并结束此操作并运行文件,它会正确显示所需的结果,但当我试图通过取消注解将其作为后台任务时,它会默默地失败到resque面板中,什么也不显示。
我在resque_schedule. yml中从resque-scheduler排队

start_worker:
cron: "55 6 * * *"
class: StartWorker
queue: worker
args:
description: "This job starts all the worker jobs"


我尝试在defself.perform方法中放入一些简单的put语句,以检查控件是否在方法内部传递,但似乎控件甚至没有在self.perform方法内部传递
我还尝试加载rails环境,并要求在其中重新排序,但没有用,我已经运行了bundle exec rake resque:work QUEUE ='*'脚本,用于所有上述内容,然后再进行任何更改
我在rails控制台中试了www.example.com,它显示为这样,

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


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

gz5pxeao

gz5pxeao1#

1.你有没有检查resque-web面板,看看失败的作业是什么?
1.请确保在进行任何更改后重新启动workers。
1.如果你没有在你的日志中看到'hello'(特别是log/worker.log或你的日志),那么这个功能就不会发生。

  1. bundle exec rake resque:work QUEUE='*'应该是bundle exec rake resque:work QUEUE=*,以防万一你真的引用了bundle exec rake resque:work QUEUE=*
6l7fqoea

6l7fqoea2#

为我工作:

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

字符串
Ruby:3.0.3,Resque:2.2.0,Resque-push 4.5.0,Rails:6.1.4.4

相关问题