【发布时间】:2012-04-01 01:08:43
【问题描述】:
我正在构建一个网络应用程序,当用户的帖子获得新评论或用户被提及时,它会发送通知电子邮件。
我使用 Postmark 和 ActionMailer 来发送电子邮件,因此在我的 cmets 控制器中,每当创建新评论时,该操作都会触发 Mailer 发送电子邮件。问题是,这并没有我预期的那么快并且延迟了响应——当用户发表评论时,他不会立即通过 ajax 得到响应,而是等到控制器完成发送邮件。
所以我很自然地决定尝试使用 delay_job 进行后台处理。好吧,这确实有效,现在我发表评论时会立即得到回复。但是,我刚刚意识到要在 Heroku 上运行延迟作业,我需要手动启动一个工人测功机,一旦它启动,它就会一直保持下去,直到我缩小它。而且这似乎要花一些钱。
我想在尽可能少花钱的同时尝试这个,并四处寻找是否有任何解决方案。我确实找到了一个名为 HireFire 的解决方案,它会在有工作要做时自动启动您的测功机,并在没有工作要做时将其关闭(https://github.com/meskyanichi/hirefire)但是这个解决方案对服务收费,虽然比没有便宜,但仍然超出了我的初衷。
我什至在考虑不使用延迟作业并牺牲响应速度,至少在我看到该网站有任何吸引力之前。
所以我想知道,是否有任何解决方案(或 hack)可以让我在 Heroku 上免费发送通知电子邮件?还是大多数构建网站的人做这样的事情只是为额外的工作人员付费?
或者,至少在开始时不进行后台处理 ActionMailer 操作是否可以? (我不确定这对整个服务器有多少负载,例如,如果十个人同时在某事上,这是否会影响其他站点用户的性能)
【问题讨论】:
标签: ruby-on-rails heroku actionmailer delayed-job background-process