我正在构建一个网络应用,当用户的帖子收到新评论或提及用户时,会发送通知电子邮件。
我正在使用Postmark和ActionMailer发送电子邮件,所以在我的评论控制器中创建新评论时,该操作会触发Mailer发送电子邮件。问题是,这并不像我预期的那么快并且延迟了响应 - 当用户发表评论时,他没有立即通过ajax得到反应,而是等到控制器完成发送邮件。
很自然地,我决定尝试使用delayed_job进行后台处理。嗯,这确实有效,现在我发表评论后立即得到回复。但是,我刚刚意识到要在Heroku上运行delayed_job,我需要手动启动一个工作器dyno,一旦它启动,它就会一直运行直到我将它缩小。而这似乎要花一些钱。
我想尝试这一点,同时尽可能少花钱,并四处寻找是否有任何解决方案。我确实找到了一个名为HireFire的解决方案,它可以在有工作时自动启动你的dyno,并在没有工作时关闭它(https://github.com/meskyanichi/hirefire)但这个解决方案对服务收费虽然它比没有任何东西便宜,但仍然超出了我原来的目的。
我甚至考虑过没有使用delayed_job并牺牲响应速度,至少在我看到网站有任何牵引力之前。
所以我想知道,是否有任何解决方案(或黑客)让我可以免费在Heroku上发送通知电子邮件?或者大多数建立这样的网站的人只需为额外的工作人员付费吗?
或者,至少在开始时没有后台处理ActionMailer操作就可以了吗? (我不确定这对整个服务器有多大的负载,例如,如果这会影响其他站点用户的性能,则会有10个人同时发表评论)
答案 0 :(得分:3)
Hirefire应该是最适合你的。我认为你可以免费使用它,它是开源的,但不需要运行它。
另一种解决方案可能是增加铁工人。他们免费为您提供25小时/月的工作时间。
答案 1 :(得分:3)
IronWorker应该很好地满足您的需求。 (请注意,我为Iron.io工作。)无需管理服务器。只需创建工作人员,将其上传到IronWorker,然后立即运行或安排它们以供日后使用 - IronWorker具有一些灵活的计划选项。正如另一篇文章中所提到的,每个月都有很多小时免费。
答案 2 :(得分:0)
如果你不需要实时,即你对10分钟的延迟感到满意,你可以使用Heroku Scheduler。每10分钟运行一次任务,启动当前的作业队列,然后死亡,直到下一个10分钟的迭代。
不是免费的,但也不像排队工人那么多。