1

我正在使用一个报告滥用按钮,单击哪个ajax 调用转到控制器,然后在数据库中插入滥用的帖子后,它返回成功。在成功响应时,它在 UI 主题上显示为滥用。现在我想向管理员发送有关此的邮件。我已经在控制器中集成了邮件程序,即成功执行邮件程序代码并将邮件发送给管理员。

现在的问题是发送邮件需要太多时间,所以我的ajax 响应时间增加了。我想要的是邮件程序代码应该在控制器发送响应之后执行,这样响应时间应该会减少。

谢谢

4

3 回答 3

1

处理此问题的一种简单方法是创建一个线程来处理电子邮件。只需这样做:

Thread.new do
  SomeMailer.some_method.deliver
end

在单独处理线程时,您的控制器操作将继续并完成 Ajax 响应。请记住,如果您的邮件程序有大量处理,那么它可能会失败(并且它不会记录任何错误,因为没有记录线程)如果仍然处理超过完成主控制器操作的时间。这只会在开发中发生,因为类在完成时未实例化。要解决这个问题,只需在你的 development.rb 中更改它:

config.cache_classes = true

您也可以使用后台作业进程,但对于较轻的负载,线程工作得很好并且易于实现。

于 2012-08-08T05:43:42.337 回答
0

你试过使用delayed_job吗?

于 2012-08-08T05:37:41.483 回答