0

アプリケーションでBackburner ( Beanstalkd用のRubyクライアント)を使用して、たとえば、着信ジョブを同じチューブで監視している50人のワーカーを作成しようとしています。問題は、これらの50人のワーカーのそれぞれが、ジョブを実行するときに、重いファイル操作などを実行し、それぞれが一意の名前の番号付きディレクトリに対していくつかの操作を実行する必要があることです。たとえば、ワーカー7はdir7という名前のディレクトリで作業する必要があります。

当初はThreadsOnFork50スレッドのワーカーを作成でき、ワーカーのperform()メソッドから各スレッドに関連付けられた番号にアクセスできると思っていましたが、まだアクセスできていません。

Backburnerを使用してこの状況に対処するにはどうすればよいですか?または、Backburnerでそれが不可能な場合は、他のRuby Beanstalkdクライアントを使用しますか?私の質問が十分にはっきりと伝わっていることを願っています。ありがとう。

4

1 に答える 1

0

私はこの問題を大雑把に解決しました。環境変数を介して指定された番号をワーカーに渡すことでワーカーを起動するシェルスクリプトを作成しました。誰かが同様の解決策を探しているなら、以下はスニペットです:

#!/bin/bash
for i in $(seq 1 "$1"); do
    env WORKER_NUM=$i rake QUEUES=queue1 backburner:work > logs/backburner.log 2>&1 &
done

Backburnerのドキュメントrequire 'backburner/tasks'で説明されているように、Rakefileに追加することで、rakeタスクを使用できるようになります。

于 2013-02-19T16:31:53.930 に答える