2011-01-31 41 views
1

我打算在Heroku上运行我们的网络应用程序。我正在寻找一个宝石来处理一些后台工作。即发送电子邮件,调用一些通过API将文件提交给编码服务的方法等。寻找背景宝石上的建议

到目前为止,有几个想到的是resque和delayed_job。我听到关于resque的好消息,它也似乎是更受欢迎的宝石in its category。 Ryan Bates在delayed_job上做了很棒的screen cast。但是,我听说delayed_job出现了一些问题。即在一些地区不太稳定。所以我听到了。

Heroku提供Redis-to-Go。他们有一个免费的计划,提供5MB。如果我用resque去,这5mb计划是否足以处理后台工作?我不想最终花费更多的背景工作。

只关心如果我去resque,我会需要另一个数据库只是为了运行后台作业。如果我使用Redis来做其他事情,那么也许这是值得的。值得拥有另一个数据库来处理后台作业吗?

我应该考虑替代宝石?如果是这样的话?

+3

我的印象是,你必须购买Heroku工作人员在Heroku的后台工作。我认为你没有办法运行一个特殊的过程(比如delayed_job等都需要)。 – cam 2011-01-31 22:19:30

回答

1

delayed_job和resque都能很好地工作。随着后台请求量的增加,resque应该更好地扩展。

resque对redis的使用应限于任务请求。后台任务所需的大型数据对象应存储在除后台工作队列之外的其他位置。例如,发送给后台工作人员进行编码的文件应存储在AWS S3或其他持久性存储中,而不是由resque使用的redis队列。

使用delayed_job或resque时,您将需要运行花费金钱的后台工作人员。您可能需要查看自动缩放解决方案,以便根据需要动态启动和停止后台工作人员。

http://s831.us/h3pKE6为例。

0

我们已经非常密集地使用了delayed_job,发送了数百个并发电子邮件,并且工作得非常好。完美无缺。是的,这个工人的成本是36美元/月。但是一个工作人员可以完成很多工作......几个相当复杂的电子邮件(很多dbase查找)每秒发送一次。