我想传递请求参数,以便在delayed_job上执行它,如下所示:
ObserveJob.perform_later(请求)
但是错误总是ActiveJob::SerializationError:不支持的参数类型: ActionDispatch::Request
是否有一种方法可以在rails中传递此内置请求params,以便它能够使用delayed_job正确执行?
发布于 2022-04-28 15:06:42
而不是传递整个request
对象-这是相当大和复杂的-只传递您实际需要的属性到作业。这有几个优点:
大型、复杂和嵌套对象(如问题中的faster.
我会将perform
方法更改为
def perform(path:, referer:, url: remote_ip:, user_agent:, location:)
# ...
end
就这样叫它:
ObserveJob.perform_later(
path: request.path,
referer: request.referer,
url: request.url,
remote_ip: request.remote_ip,
user_agent: request.user_agent,
location: request.location
)
发布于 2022-04-28 08:14:23
一个人可以通过多种方式:
Delayed::Job.enqueue(Abc.new(param1, param2, queue: "Update Derive")
延迟的工作就像:
class Abc < Struct.new(:param1, :param2)
def perform
sum = param1 + param2
...
end
end
https://stackoverflow.com/questions/72038580
复制相似问题