gpt4 book ai didi

ruby-on-rails - Delayed::Job.enqueue 排队作业,Heroku 将它们从队列中清除,但我的 perform 方法从未被调用;为什么?

转载 作者:行者123 更新时间:2023-12-04 06:35:51 25 4
gpt4 key购买 nike

我正在我的 Rakefile 的 cron 任务中排队作业,如下所示:

Delayed::Job.enqueue(MyJob.new(variable))

我在/lib 中有一个类,如下所示:
class MyJob < Struct.new(:variable)
def perform
Watchdog.create(:module => 'MyJob', :messagetype => 'Notice', :message => "Variable is #{variable}")
end
end

我有一个看门狗类,如下:
class Watchdog < ActiveRecord::Base
attr_accessible :id,
:module,
:message_type,
:message,
:created_at,
:updated_at
end

我已将其部署到 Heroku。在我运行 heroku rake cron 之后,我看到一个工作被放置在我的 Delayed_jobs 表中(例如,它被排队),我看到在我添加一个工作人员后,它从队列中删除。然而,对 Watchdog.all 的调用返回一个空集。

因此,看起来作业已入队和出队,但未执行我的 MyJob 对象的 perform 方法。

我在 Heroku 上运行 Rails 3 和 Ruby 1.8.7。

有谁知道为什么我的执行方法没有被调用?非常感谢您的帮助。我对 Rails 比较陌生。

最佳答案

我编写 DelayedJob 类的方式将采用以下格式:

class MyJob
attr_accessor :variable

def initialize(variable)
self.variable = variable
end

def perform
Watchdog.create(:module => 'MyJob', :messagetype => 'Notice', :message => "Variable is #{variable}")
end
end

这可能在功能上等同于您正在做的事情,但我知道这种形式有效。

关于ruby-on-rails - Delayed::Job.enqueue 排队作业,Heroku 将它们从队列中清除,但我的 perform 方法从未被调用;为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4892778/

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