2010-11-18 8 views
1

私はバックグラウンドで連続プロセスを持つ必要があるレールアプリケーションを実行しています。この考え方は、ユーザーがプロセス内にあるリストにトランザクションで追加され、続いて連続して実行されるアルゴリズムに従ってペアになるというものです。Railsのバックグラウンドプロセス/データ構造

ユーザーが一定の時間待機している場合は、アルゴリズムを実行する必要があるため、各ユーザーの追加後にアルゴリズムを実行することはできません。

これは可能ですか?私は基本的には、常時稼働しているバックグラウンドでdiff時間にアクセスされるデータ構造が必要です。

ありがとうございます!

答えて

2

delayed_jobはうまく機能し、簡単に統合できます。バックグラウンドで何かを任意に実行することもできます。それは、常にアプリケーションを読み込んでアンロードするスクリプト/ランナーと違って、レールアプリをワーカーとしてロードしてメモリに保持します。 DJは仕事を探すためにdbを監視します。私は、別のサーバーがアプリケーションサーバーとは別のバックグラウンドタスクを処理していたサイトをセットアップしました。

+0

あなたは他の答えに自分のコメントを見ることができますか?バックグラウンドのデータ構造を扱うことができますか? – Danny

+0

データ構造を明確にしたり、例を挙げたりできますか?それはハッシュなのか、それともユーザーにロードされているのでしょうか、それともすべてのリクエストでメモリに保存されていますか?いくつかのバックグラウンドジョブアプリでは、引数を渡して、データベースにシリアライズしてリロードすることができます。 – Caleb

+0

はい。したがって、常に変更されている大きなツリータイプの構造になる可能性が最も高いです。それが可能だと思いますか?ありがとう! – Danny

1

「ワーキングとスターリング」をご覧ください。

+0

私はそれらを見てきましたが、実行できるバックグラウンドのジョブ/メソッドを理解していますが、これがバックグラウンドで実行されている永続的なデータ構造を持つ方法がわかりません。私が絶えず更新できるようにしたい大きなバイナリツリーを想像してみてください。何か案は? – Danny

0

cronやシェルスクリプト、バッチファイル、rakeやRailのscript runnerを使って実行できます。

cronを使用すると、ジョブが実行される間隔を指定できます。たとえば、5分ごとです。または、システムの起動時に起動され、しばらくの間スリープ状態になり、起床してコードを実行した後、再びスリープ状態に戻り、無期限にループするスクリプトを作成できます。

あなたの行動を実行し、内部的にスリープ状態に戻り、もう一度スリープ状態に戻り、スリープ状態に入るループをスクリプトに書くことができます。

Railのscript runnerを使用する利点は、Railsアプリケーションが認識しているすべてのものにアクセスできることです。デメリットは、起動するたびにRailsの初期化ルーチンを実行する必要があるため、アプリが起動するまでに時間がかかることです。

関連する問題