在Rails中异步运行慢速任务?

时间:2010-12-15 23:25:54

标签: ruby-on-rails ruby asynchronous

我正在开发一个需要异步运行长而慢的任务的Rails 2.3.x应用程序。

延迟请求直到处理完成有点痛苦。我们很高兴发送一个“好的,我们已经收到了,我们正在努力” - 回复客户端的样式回复,然后在客户离开后立即处理工作。

所以我已经看到了一些方法(例如分叉或使用cron),但似乎任务排队系统可能是一个更好的主意。

似乎主要有三个:

Sparrow看起来特别有趣,因为它支持Memcached,但我不想在没有做出明智决定的情况下选择一个。有没有人对最佳实践有任何见解?我很想知道你对上述经历的看法,特别是这种方法或提到的图书馆的任何主要问题。也许还有一种更好的方法来做到这一点,我完全错过了?

就在那里:Rails 3.x现在不是一个选项,这需要适用于Rails 2.3.x.

谢谢!

1 个答案:

答案 0 :(得分:1)

我推荐使用delayed_job,特别是this fork and branch。我自己在rails 2.3.5上使用它并且效果很好。

它有一个rails 3分支,当你想要升级时,它适用于多个后端,并且它有一个可选的漂亮语法:

Notifier.delay.deliver_signup @user

顺便说一句,只是分叉是一个错误,因为你会发现fork没有良好的数据库连接。