- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个 Rails 应用程序,其中有一个功能可以发送很多电子邮件。我想以异步方式
的方式进行,并且我认为 deliver_later
方法可以做到这一点。目前,从用户单击 submit
到提交表单,我有一些延迟 - 这会导致糟糕的用户体验(这是一个非常简单的表单)。我的实现如下所示:
def create
respond_to do |format|
if @competition.save
[...]
send_notification_to_team_members
end
end
def send_notification_to_team_members
@team.members.each do |member|
unless member.user.eql?(current_user)
Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later
end
end
end
目前,完成该操作大约需要 4 秒。我也试过:
Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later(wait: 1.minute)
然后它需要更长的时间 - 我估计大约 1 分钟。
那么,我是不是错误地使用了 deliver_later
,或者这个方法没有达到我的预期。在那种情况下,我可以使用另一种方法来提高我的表现吗?
最佳答案
deliver_later
使用 ActiveJob提供异步执行。
但是 ActiveJob 本身并不提供异步性——它是一个统一的 api 层,可以由许多后端实现。默认的只是内联运行所有内容,它不是异步的。
要获得异步使用,您需要选择一个异步后端。您可以在应用程序的配置中配置后端
config.active_job.queue_adapter = ...
一般来说,大多数适配器都需要一个相应的 gem(例如 delayed_job、sidekiq、sucker_punch),它们也可能有自己的依赖项(例如 sidekiq 要求您使用 redis。
关于ruby-on-rails - Rails 4 - Mailer deliver_later 没有按照我的预期进行,阻止了 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28779793/
尝试使用delayed_job_active_record升级到Rails 4.2。我没有为测试环境设置delayed_job后端,因为我认为这样作业会立即执行。 我正在尝试使用 RSpec 测试新的
我有一个 Ruby on Rails 应用程序,我需要在面试前一天向申请人发送提醒邮件。为此,我计划使用 The Rescue Scheduler,我使用的是 rails v 4.2。我已经运行了 r
升级到 Rails 6 后,我注意到默认邮件程序的 .deliver_later与 Rails 5 中的工作方式不同。 配置: config.active_job.queue_adapter = :i
我正在尝试使用 Rails 4.2 的 Deliver_later 方法设置联系表格。但是,我只能让 Deliver_now 工作,因为 Deliver_later 试图序列化我的对象并且每次都失败。
我有一个非常基本的邮件设置如下发送交易邮件: class PayoutMailer < ApplicationMailer default from: 'hello@groundworkai.co
什么有效 我当前的 user_controller.rb 代码: def create u = User.new(create_user_params) . . . if u.sa
我有一个 Rails 应用程序,其中有一个功能可以发送很多电子邮件。我想以异步方式 的方式进行,并且我认为 deliver_later 方法可以做到这一点。目前,从用户单击 submit 到提交表单,
我的生产应用程序在 AWS 上运行,但在某些邮件程序上的事件作业 - deliver_later 有问题。我在开发中成功发送了所有带有 deliver_later 的电子邮件,但在生产中有些不同。某些
与 ActiveJob 交互的常见模式在 Rails 中是使用 perform() 设置作业通过 perform_now 异步调用的方法或 perform_laterMailers特殊情况可直接调用d
我是一名优秀的程序员,十分优秀!