gpt4 book ai didi

ruby-on-rails - Action Job/Mailer 的 `deliver_now` 和 `deliver_later` 之间的区别

转载 作者:行者123 更新时间:2023-12-03 12:42:14 24 4
gpt4 key购买 nike

ActiveJob 交互的常见模式在 Rails 中是使用 perform() 设置作业通过 perform_now 异步调用的方法或 perform_laterMailers特殊情况可直接调用deliver_nowdeliver_later自从 ActiveJobActionMailer 很好地集成在一起.
rails documentation有以下评论——

# If you want to send the email now use #deliver_now
UserMailer.welcome(@user).deliver_now

# If you want to send the email through Active Job use #deliver_later
UserMailer.welcome(@user).deliver_later
措辞使它看起来像 deliver_now不会使用 ActiveJob发送邮件。这是正确的,如果是这样, deliver_now 之间的真正区别是什么?和 deliver_later ?一个不是异步的吗?
类似地,相同的区别是否适用于 perform_nowperform_later ?
谢谢!

最佳答案

正如您在问题中所说,deliver_now不使用 ActiveJob .

基本上,deliver_later是异步的。当您使用此方法时,电子邮件不会在此刻发送,而是被推送到作业队列中。如果作业未运行,则不会发送电子邮件。 deliver_now无论工作的状态如何,都会立即发送电子邮件。 Here您可以查看 deliver 的文档方法。

根据你的第二个问题,perform_now将立即处理作业而不发送到队列。 perform_later但是,会将作业添加到队列中,并且一旦作业的队列空闲,就会执行该作业。 Here您可以查看 perform 的文档方法。

关于ruby-on-rails - Action Job/Mailer 的 `deliver_now` 和 `deliver_later` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com