gpt4 book ai didi

ruby-on-rails - Ruby on Rails - 延迟作业 - 作业队列未添加到数据库中

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:04 25 4
gpt4 key购买 nike

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

我有三个 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 显示为:

Job failed to load: undefined class/module A

Job failed to load: undefined class/module B

谁能帮我解决这个问题?

提前致谢。

最佳答案

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

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

这将强制 my_custom_class 在 worker 启动时加载。 <强> Reference

关于ruby-on-rails - Ruby on Rails - 延迟作业 - 作业队列未添加到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com