【发布时间】:2019-11-30 09:14:40
【问题描述】:
在用 SidekiqWorker 的 perform_async 替换 ActiveJob 的 perform_later 调用时,我之前作为对象传递的参数和 ActiveRecord::Relation 现在作为字符串发送。这是预期的并且同步不支持 ruby 对象还是我遗漏了什么?
【问题讨论】:
标签: ruby-on-rails sidekiq rails-activejob
在用 SidekiqWorker 的 perform_async 替换 ActiveJob 的 perform_later 调用时,我之前作为对象传递的参数和 ActiveRecord::Relation 现在作为字符串发送。这是预期的并且同步不支持 ruby 对象还是我遗漏了什么?
【问题讨论】:
标签: ruby-on-rails sidekiq rails-activejob
这是意料之中的吗,sync不支持ruby对象,因为sidekiq和redis一起工作,redis和rails应用的内存是不共享的。
【讨论】:
这是意料之中的。由于 Sidekiq 使用 Redis 作为数据存储,因此参数需要可序列化。
根据Sidekiq wiki,参数必须是简单的 JSON 数据类型(数字、字符串、布尔值、数组、哈希)。如果你想使用 ActiveRecord 对象,你可以传入它们的 ID 作为参数
【讨论】: