Mailer ActionMailer 的 execution expired 怎么解决?

suupic · 2011年12月22日 · 最后由 ericguo 回复于 2013年02月04日 · 10887 次阅读

批量发邮件,遇到 execution expired,exception:Timeout::Error,然后 resque 会停住

stackoverflow 上找了一圈,几个人给的解决方法都是把:smtp 换成:sendmail 但是我这个应用很可能部署在内网里,不能直连外网,只能用 smtp

我现在的想法是把 resque 的批量 job 拆分成每个邮件一个小 job,但这样数量在几万个甚至更多,不知道 resque 能否抗得住

求更好的解决方法

就算是内网也可以用 smtp 啊,难道你的 Web 服务器不上网?

#1 楼 @huacnlee 内部系统,放在 nginx 后面的内网主机里,可以通过连接公网的 smtp 服务器发信,但 sendmail 就不行了。

问题就是如果用 smtp 的话,有时会出现连接超时,一个大 job 执行一半断掉了

resque 底层 redis 是很快的

建一个 smtp 发邮件的 relay 服务器,我刚上两天建了一个,这样绝对不会超时啦!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号