gpt4 book ai didi

ruby-on-rails - rails 上的 ruby : delayed_job does not execute function from module

转载 作者:行者123 更新时间:2023-12-04 21:50:00 27 4
gpt4 key购买 nike

我想使用delayed_job 从 Controller 执行一个功能。该函数存储在模块 lib/site_request.rb 中:

module SiteRequest

def get_data(query)
...
end
handle_asynchronously :get_data

end

查询 Controller .rb:
class QueryController < ApplicationController

include SiteRequest

def index
@query = Query.find_or_initialize_by_word(params[:query])
if @query.new_record?
@query.save
get_data(@query)
flash[:notice] = "Request for data is sent to server."
end
end

end

我还尝试删除 handle_asynchronously来自模块的子句并使用 delay.get_data(@query) ,两者都不会静默执行(没有延迟作业代码工作)

最佳答案

我自己也很难尝试使用内置的延迟方法。我在自己的编码中确定的模式是自己将 DelayedJobs 加入队列,为它们提供一个有效负载对象以供其工作。这也应该对你有用,而且似乎也很有意义。 (例如,这样,您甚至可能不需要 SiteRequest 模块。)

class MyModuleName < Struct.new(:query)

def perform
# TODO
end

end

然后,而不是调用 get_data(query)保存后,排队:
Delayed::Job.enqueue(MyModuleName.new(query))

关于ruby-on-rails - rails 上的 ruby : delayed_job does not execute function from module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617544/

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