在 heroku 上使用 Action Mailer 安排电子邮件
Scheduling emails with Action Mailer on heroku
我正在尝试安排在触发操作后延迟发送电子邮件。我正在使用具有 deliver_later 功能的 Action Mailer:
UserMailer.email_form(params[:session][:email]).deliver_later(wait: 2.minute)
它在本地和 heroku 上工作正常,除非我在安排了电子邮件但尚未发送时再次重新启动 server/deploy。我该如何解决这个问题?
我认为问题在于:deliver_later
在后台使用 ActiveJob(Rails 的 part/framework)发送电子邮件。 Rails 默认情况下带有异步队列实现,运行s 作业具有进程内线程池。作业将 运行 异步,但队列中的任何作业将在重启或进程崩溃时被丢弃,因为它们仅在 RAM(内存)中,而不在持久后端(DB、Redis)中。
如果您希望保留作业,则应切换到不同的适配器(Sidekiq、Resque、Delayed Job 等)。
您可以找到 more details here.
我正在尝试安排在触发操作后延迟发送电子邮件。我正在使用具有 deliver_later 功能的 Action Mailer:
UserMailer.email_form(params[:session][:email]).deliver_later(wait: 2.minute)
它在本地和 heroku 上工作正常,除非我在安排了电子邮件但尚未发送时再次重新启动 server/deploy。我该如何解决这个问题?
我认为问题在于:deliver_later
在后台使用 ActiveJob(Rails 的 part/framework)发送电子邮件。 Rails 默认情况下带有异步队列实现,运行s 作业具有进程内线程池。作业将 运行 异步,但队列中的任何作业将在重启或进程崩溃时被丢弃,因为它们仅在 RAM(内存)中,而不在持久后端(DB、Redis)中。
如果您希望保留作业,则应切换到不同的适配器(Sidekiq、Resque、Delayed Job 等)。
您可以找到 more details here.