ruby-on-rails – Rails 4 – Mailer deliver_later没有达到我的
发布时间:2020-12-16 21:12:42 所属栏目:百科 来源:网络整理
导读:我有一个rails应用程序,其中我有一个发送了很多电子邮件的功能.我想以异步方式进行,我认为deliver_later方法会这样做.目前,我从用户点击提交到提交表单时有一些延迟 – 这会导致糟糕的用户体验(这是一个非常简单的表单).我的实现看起来像这样: def create r
我有一个rails应用程序,其中我有一个发送了很多电子邮件的功能.我想以异步方式进行,我认为deliver_later方法会这样做.目前,我从用户点击提交到提交表单时有一些延迟 – 这会导致糟糕的用户体验(这是一个非常简单的表单).我的实现看起来像这样:
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Postgres psql: FATAL: Peer authentication fai
- ruby-on-rails – 如何在rails上应用补丁到ruby?
- xcode – 一个单元如何测试依赖于网络的操作?
- vue网页报错:webpackJsonp is not defined 解决
- reference – 你能创建Typescript包吗?比如c#dl
- 重新学习COCOs2D-X版本2.2.3开始---第一篇引擎的
- ios – Travis-CI与:错误:无法找到方案
- 利用React写一个评论区组件(React初探)
- ruby – 一组字符串并重新打开String
- React Native之ReactJs生命周期(四)
热点阅读