2010-12-15 7 views
1

私は、遅くて遅いタスクを非同期に実行する必要があるRails 2.3.xアプリケーションに取り組んでいます。Railsで低速タスクを非同期に実行していますか?

処理が完了するまで要求を遅らせることは少し難しいです。我々は「OK、それを受け取り、それに取り組んでいます」というメッセージをクライアントに送り返すだけで満足しています。クライアントがいなくなったらすぐに仕事に取り掛かります。

私はこれを行うためのいくつかの方法(フォークやcronの使用など)を見てきましたが、タスクキューイングシステムが良いアイデアかもしれません。

三つの主要なものがあるように思え:

スパロウが原因Memcachedにとっての支援に特に面白そうだが、私情報に基づいた決定を下すことなく、ただ一つを選びたくはありません。誰かがベストプラクティスに関する洞察を持っていますか?私はあなたの上記の経験、特にこのアプローチや言及された図書館の大きな問題を聞いてみたいと思います。おそらくこれを行うためのさらに良い方法があります。私は完全に逃しましたか?

ちょうどそれがあります:現在、Rails 3.xはオプションではありませんが、これはRails 2.3.xで動作する必要があります。

ありがとうございます!

+3

またお試しください:[navvy](https://github.com/jeffkreeftmeijer/navvy)と[delayed_job](https://github.com/tobi/delayed_job)は両方とも良い経験を持っていますが、特別な洞察はありません – iain

+0

あなたはいつも自分で書くことができます。私の経験では、そうすることで、あなた自身の問題を解決するだけでなく、自分の問題をよりよく理解し、必要なものを正確に実行します。他の人々のソリューションを自分たちのわずかに異なる問題に読み替えるよりも時間がかかります。 – maerics

答えて

1

私はdelayed_job、特にthis fork and branchをお勧めします。私はレール2.3.5でそれを使っています。うまくいきます。

それはあなたがアップグレードしたいないときのために3分岐が、それは複数のバックエンドで動作するレールを持っており、それは、オプションのかなりの構文があります、ちょうどフォークところで

Notifier.delay.deliver_signup @user 

をあなたと間違いですフォークが良いデータベース接続を持っていないことがわかります。

+0

ねえ、洞察に感謝します。 :) 2.0.5以上2.0.0に行くための特別な理由は何ですか? –

+0

私がリンクしている支店は、レール2用で、2.0.xのバージョンを持っていますので、最新バージョンを使用してください - 現在2.0.5。バンドル業者を利用している場合(良い動き)、2.0.x、2.0.12などと一致する "gem delayed_job、〜2.0.5 '"と言って、2.0.xシリーズの最新のものを指定することができます。 – gunn

関連する問題