【问题标题】:Ruby on Rails - Delayed job - Jobs queue are not adding in the databaseRuby on Rails - 延迟作业 - 作业队列未添加到数据库中
【发布时间】:2014-11-04 23:53:12
【问题描述】:

当它被守护时,作业队列不会添加到延迟作业表中。但是,当它没有被守护时,这是有效的。

我有三个 rake 任务(a.rake、b.rake、c.rake)。

在 a.rake 中

task :run_a => :environment do
  A.new.get_a_data
end

class A
 def get_a_data
   ...
   schedule_next_a_job
 end

 def schedule_next_a_job
   get_a_data
 end

handle_asynchronously :get_a_data, :run_at => Proc.new { 2.minutes.from_now }, :queue => 'a'
end

在 b.rake 中

task :run_b => :environment do
  B.new.get_b_data
end

class B
 def get_b_data
  ...
  schedule_next_b_job
 end

 def schedule_next_b_job
   get_b_data
 end

handle_asynchronously :get_b_data, :run_at => Proc.new { 5.minutes.from_now }, :queue => 'b'
end

在 c.rake 中

namespace :run do
  task :start do
  `rake run_a`
  `rake run_b`
  if Rails.env == 'development'
    `QUEUES=a,b rake jobs:work`
  else
    `RAILS_ENV=production bin/delayed_job --queues=a,b start` 
  end

  task :stop do
  `rake jobs:clear`
  end
end

在控制台中,我运行如下:

RAILS_ENV=production rake run:start # to start jobs worker
rake run:stop # to clear my jobs worker

在我的延迟作业表中,last_error 显示为:

作业加载失败:未定义的类/模块 A

作业加载失败:未定义的类/模块 B

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

  • 你看过这个Solution了吗??
  • @Gagan 是的。需要'my_custom_class'的作品!。谢谢

标签: ruby-on-rails ruby delayed-job


【解决方案1】:

反序列化错误的一个常见原因是 YAML 引用了工作者不知道的类。如果是这种情况,您可以添加

# file: config/initializers/custom.rb
    require 'my_custom_class'

这将在工作程序启动时强制加载my_custom_classReference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2013-03-05
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多