【问题标题】:Sidekiq: args in perform_async sent as string instead of actual objects or ActiveRecord::RelationSidekiq:perform_async 中的参数作为字符串而不是实际对象或 ActiveRecord::Relation 发送
【发布时间】:2019-11-30 09:14:40
【问题描述】:

在用 SidekiqWorker 的 perform_async 替换 ActiveJob 的 perform_later 调用时,我之前作为对象传递的参数和 ActiveRecord::Relation 现在作为字符串发送。这是预期的并且同步不支持 ruby​​ 对象还是我遗漏了什么?

【问题讨论】:

    标签: ruby-on-rails sidekiq rails-activejob


    【解决方案1】:

    这是意料之中的吗,sync不支持ruby对象,因为sidekiq和redis一起工作,redis和rails应用的内存是不共享的。

    Check Wiki

    【讨论】:

      【解决方案2】:

      这是意料之中的。由于 Sidekiq 使用 Redis 作为数据存储,因此参数需要可序列化。

      根据Sidekiq wiki,参数必须是简单的 JSON 数据类型(数字、字符串、布尔值、数组、哈希)。如果你想使用 ActiveRecord 对象,你可以传入它们的 ID 作为参数

      【讨论】:

        猜你喜欢
        • 2021-08-11
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 2020-06-02
        相关资源
        最近更新 更多