0

Railsアプリケーションを作成しています。1つのアクションで、長時間実行されるプロセスを生成する必要があります。これは問題ではありません。スポーンジェムなどを使用して新しいプロセスをフォークできます。ただし、プロセスが生成されてからしばらくすると、ユーザーはそのプロセスに追加のデータを渡すことができる必要があります。

もちろん、UNIXソケットをリッスンし、ソケットアドレスをHTTPセッションに格納し、ユーザーがプロセスに新しいデータを渡す必要がある場合は、drbプロトコルを使用してそのプロセスと通信するプロセスをforkできます。しかし、それは最善の解決策ではなく、ホスティングにアプリケーションをデプロイすることは問題になると思います。

それを行う簡単な方法は何ですか?

4

3 に答える 3

0

追加のデータをデータベースに入れて、プロセスがそこで「新しいデータ」をチェックできますか?

于 2010-03-31T00:01:44.463 に答える
0

レベルアップすることをお勧めします。delay_jobを使用して、ジョブのパラメーターの生成と初期設定を処理します。

delayd_jobのdbmsモデルを変更して、後でジョブに送信する追加情報のフィールドを追加できます。

次に、フローは次のようになります。

  1. delayd_jobを使用して送信します。jobsテーブルのIDを保存します。stock de; ayed_jobでジョブIDが表示されない場合は、必要に応じてdelayed_jobを変更します。

  2. ジョブテーブルのフィールドに追加データを追加します

メインジョブがフォークされたジョブからのデータを必要とする場合は、そのためのdbフィールドを使用することもできます。

必要なメッセージパッシングの量を最小限に抑えるようにアプリケーションを設計する必要があります。それ以外の場合は、メッセージプロトコルを設計する必要があります。できますが、避けるべき作業です。

于 2010-04-01T02:42:54.880 に答える
0

スレッドを使用して、スレッドへの入力用とスレッドの応答用の2つのキューを介してスレッドと通信することはできませんか?

于 2010-04-01T16:57:47.187 に答える