【问题标题】:sidekiq background job to send email and heroku worker发送电子邮件和heroku工作人员的sidekiq后台工作
【发布时间】:2013-07-21 22:52:32
【问题描述】:

抱歉,关于 Sidekiq 延迟 ActionMailer 的基本问题。根据this article,Sidekiq 可以通过说UserMailer.delay_for(1.hour).... 来延迟发送电子邮件。

这是否意味着这现在是在后台处理的,还是意味着它只是将电子邮件发送延迟一个小时,但一旦那个时间到来,那么电子邮件基本上就像普通的 ActionMailer 一样发送,这会减慢缩短响应时间?

或者,如果我真的想在后台执行此操作,那么我将不得不做其他 sidekiq 的事情,例如将其放入特定的 Worker 中,然后以这种方式启动它?

另外,如果我只是通过UserMailer.delay... 来做这件事,我想我不需要 Heroku 上的工人测功机来节省一些钱,对吗?

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails ruby background-process sidekiq


    【解决方案1】:

    是的,对于电子邮件,您无需执行任何其他操作。这就像 1 小时后打电话给 Mailer。您只需要确保没有将任何复杂对象传递到邮件程序中,例如用户对象,您应该只传递 user_id,因为它将存储在 redis 中。在 Mailer 上获取具有给定 id 的用户对象。

    【讨论】:

    • 谢谢,所以当 Mailer 1 小时后发送 100 封电子邮件时,这不会减慢网站的响应时间吗?另外,至于传递任何复杂的对象,这是否意味着不建议在邮件程序中进行任何计算,例如查找姓氏为 Smith 的所有用户?我知道这在模型中做得更好,但我问的是示例目的。另外,我还需要 Heroku 上的工人测功机吗?谢谢!
    • 是的,您的响应时间不会受到影响,因为邮件程序的工作是在后台(及以后)完成的。你应该只传递简单的数据,比如整数、字符串和数组。再次是的,你需要一个额外的 heroku 测功机。
    猜你喜欢
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2013-03-23
    • 2011-06-15
    • 2011-07-11
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    相关资源
    最近更新 更多