我正在使用 Sidekiq 在后台执行一些繁重的处理。我在网上查了一下,但找不到以下问题的答案。我在用:
Class.delay.use_method(listing_id)
然后,在课堂上,我有一个
self.use_method(listing_id)
listing = Listing.find_by_id listing_id
UserMailer.send_mail(listing)
Class.call_example_function()
两个问题:
如何使这个函数对 UserMailer sendmail 是幂等的?换句话说,如果延迟方法运行两次,我如何确保它只发送一次邮件?将它包装在这样的工作中吗?
mail_sent = false if !mail_sent UserMailer.send_mail(listing) mail_sent = true end
我猜不是因为再次尝试该功能,然后 mail_sent 设置为 false 以进行第二次运行。那么如何使 UserMailer 只运行一次。
- 在延迟异步方法中调用的函数也是异步的吗?换句话说, Class.call_example_function() 是否异步执行(不是响应/请求周期的一部分?)如果不是,我应该使用 Class.delay.call_example_function()
总的来说,只是熟悉 Sidekiq,所以任何想法都会受到赞赏。
谢谢