首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sidekiq和Sidetiq发送重复的电子邮件

使用Sidekiq和Sidetiq发送重复的电子邮件
EN

Stack Overflow用户
提问于 2014-08-26 13:41:55
回答 1查看 662关注 0票数 0

我在使用Sidekiq和Sidetiq发送重复邮件时遇到了问题。我几乎什么都试过了,但还是找不到解决方案。我有一个Sidekiq worker,它看起来像这样:

代码语言:javascript
复制
class InvoiceEmailSender
  include Sidekiq::Worker
  include Sidetiq::Schedulable

  recurrence {minutely(2)}
  def perform(invoice_id, action)
    @invoice = Invoice.find(invoice_id.to_i)
    if action == "invoice"
      send_invoice
    else
      send_reminder
    end
  end

  private
  def send_invoice
    if @invoice.delivery_date == Date.today
      InvoiceMailer.delay.send_invoice(@invoice)
    else
      InvoiceMailer.delay_for(@invoice.delivery_date.to_time).send_invoice(@invoice)
    end
  end

  def send_reminder
   InvoiceMailer.delay.send_invoice_reminder(@invoice) unless @invoice.paid?
  end
end

在控制器中结束我这样使用它:

代码语言:javascript
复制
InvoiceEmailSender.perform_async(@invoice.id, "invoice")

当我尝试发送此电子邮件时,在sidekiq控制台中出现以下错误:

代码语言:javascript
复制
2014-08-26T05:36:01.107Z 4664 TID-otcc5idts WARN: {"retry"=>true, "queue"=>"default", "class"=>"InvoiceEmailSender", "args"=>[1409031120.0, 1409031240.0], "jid"=>"06dc732831c24e1a6f78d929", "enqueued_at"=>1409031120.7438812, "error_message"=>"Couldn't find Invoice with 'id'=1409031120", "error_class"=>"ActiveRecord::RecordNotFound", "failed_at"=>1409031249.1003482, "retry_count"=>2, "retried_at"=>1409031361.1066737}
2014-08-26T05:36:01.107Z 4664 TID-otcc5idts WARN: Couldn't find Invoice with 'id'=1409031120
2014-08-26T05:36:01.107Z 4664 TID-otcc5idts WARN: /home/mateusz/.rvm/gems/ruby-2.0.0-p0@rails4/gems/activerecord-4.1.2/lib/active_record/relation/finder_methods.rb:320:in `raise_record_not_found_exception!'

在sideiq web监视器的scheduled选项卡中,它看起来像这样:

请帮忙,因为我不知道发生了什么.

EN

回答 1

Stack Overflow用户

发布于 2014-08-26 13:59:18

传入的数据看起来像纪元时间戳,结果是Sidetiq将上一次和当前时间作为2个参数传递给你的worker,according to the documentation

我不确定你是如何对一个调度的worker进行自定义参数的,你可能需要一个不同的策略,比如不是尝试创建更多的调度worker,而是只有1个(或2个,因为看起来你让这个类做了2个作业)的调度worker来处理每隔一段时间要做的工作列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25498833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档