【问题标题】:How to migrate .delay tasks from Sidekiq to Active Job如何将 .delay 任务从 Sidekiq 迁移到 Active Job
【发布时间】:2016-09-30 02:45:12
【问题描述】:

给定一个现有的 Rails 应用程序,其后台进程由 Sidekiq 管理。

如何迁移调用,例如:

Model.delay.some_action()

从 Sidekiq 的语法到 Active Job 的后端不可知语法?

更新:

@craig.karminsky 指出了写得很好的Sidekiq to Active Job Wiki Page。此页面针对邮寄者。

旧的 Sidekiq 语法:

MyMailer.delay.send_message()

活动作业语法:

MyMailer.send_message().deliver_later

这对于邮寄者来说是一个很好的解决方案,但是我如何将非邮寄者呼叫迁移到.delay,例如:

NotAMailer.delay.do_something()

【问题讨论】:

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


    【解决方案1】:

    我在 activejob 之上为此制作了一个宝石:https://github.com/cristianbica/activejob-perform_later/。然而,宝石没有经过很好的测试,这种模式也不是一个好的模式。通过您的应用程序执行延迟的代码将使您的应用程序难以维护并触发各种错误

    【讨论】:

    • 你不喜欢你的图案怎么样?
    【解决方案2】:

    Sidekiq 的创建者 Mike Perham 有一个很好的 Wiki page 来应对这种情况。

    【讨论】:

    • 很好的文档链接,我已经更新了我的问题更具体。
    • 看起来 .perform_later 是该页面“使用”部分中非 Mailer 工作的关键......但可能有更好的选择,我肯定不知道!
    • 是的 MyJob.perform_later 很棒,但需要定义一个工作。可能无法将 Model.delay.some_action() 调用包装为活动作业。
    猜你喜欢
    • 2014-02-09
    • 2013-08-01
    • 2019-01-24
    • 2017-10-29
    • 1970-01-01
    • 2017-12-15
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多