問題タブ [beanstalkd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Zend_Queue_Adapter_Beanstalkdはありますか?
独自のアダプタを作成する前に、beanstalkdをサポートする既存のZend_Queueアダプタを探しています。
Zend FrameworkのBeanstalkd用のオープンソースアダプタ/実装はどこかにありますか?
これまでのところ、Web上で何かを見つけることができませんでした。
読んだり答えたりしてくれたみんなに感謝します!
php - Pheanstalk (PHP client for beanstalk) - how do connections work?
I'd like some help understanding the use of pheanstalk (php beanstalk client). I have a PHP program that is executed on the server when form data is sent to it. The PHP program should then package the form data as a JSON structure and send it to a backend server process.
私が理解していないのは、beanstalkd サーバーへの接続です。PHP プログラムが実行されるたびに新しい Pheanstalk() オブジェクトを作成する必要がありますか? その場合、接続を作成するコストが発生します。接続が閉じられるのはいつですか (pheanstalk には close() メソッドがないため)?
接続が永続的である場合、それは PHP プログラムのすべての実行間で共有されますか? その場合、同時ヒットの場合はどうなりますか? 助けてくれてありがとう。
apache-zookeeper - 動物園の飼育係の待ち行列の遅れ?
ワーカーをブロックせずにジョブを遅らせる機能を備えたキューをzookeeperに実装するための良い方法として、皆さんは何を提案しますか?
参照beanstalkd遅延ジョブオプション。
python - キューイング:N個のプロデューサーからN個のコンシューマー
要件は次のとおりです。
- メッセージやジョブ、またはあなたがそれを呼びたいものを生成するN個のプロデューサーがあります。
- 各プロデューサーからのメッセージは順番に処理する必要があり、各メッセージは1回だけ処理する必要があります。
- もう1つの制限があります。特定のプロデューサーに対して、処理されているメッセージは常に1つだけでなければなりません。
- 消費側は、多数のプロセスに分散している多数のスレッド(機能は同じ)で構成されています。これは、mod_wsgiを介して実行されるWSGIアプリケーションです。
現時点では、消費側のキューイングは、キューをサブクラス化するカスタムキューとして実装されていますが、プロセスの再起動時にキューが失われるという主な問題があります。
上で概説した要件を満たすことを可能にする製品はありますか?永続性のサポートは素晴らしいものでしたが、それはそれほど重要ではありません(キューはワーカープロセスのメモリに存在しなくなるため)。
php - ジョブのバッチ処理をサポートするキューイングシステム(たとえば、1人のワーカーに対して一度に複数のジョブ)
次のシナリオをサポートできるキューイングシステムを探しています。
- クライアントがジョブを追加します-特定のURL(URL1)が持つFacebookの数を確認します。
- クライアントは別のジョブを追加します-URL2の同じ情報をチェックします。
[....]
ワーカーはキューから1から50のジョブ(URL)をピックアップし(たとえば、5つしかない場合は5をピックアップし、60がある場合は50をピックアップし、他のワーカーを別のワーカーに任せます)、Facebookに対してリクエストを発行します。 API(リクエストごとに複数のURLを許可します)。成功した場合、すべてのジョブがキューから削除され、失敗した場合、すべてのジョブが残ります。
私はPHPを使用していて、Gearman、Beanstalkdを調べましたが、同様の機能は見つかりませんでした。このような「バッチデキュー」をサポートする(無料の)キューイングシステムはありますか?
または、多分、誰かがそのような問題に対処する別の方法を提案することができますか?キューイングシステムの外部にある「チェックする」URLのリストを保持し、X期間ごとに実行されるcronジョブを使用して、それらを最大N個のアイテムのバンドルに追加することを検討しました。しかし、それはあなた自身のキューを構築するようなものであり、それは目的全体を打ち負かしますね?
python - 無限にループする作業キューを整理する最適な方法は何ですか?
約 1000 ~ 10000 のジョブがあり、1 分ごとに一定の間隔で実行する必要があります。新しい仕事が入ってきたり、キャンセルしなければならないこともありますが、まれなケースです。ジョブはタグ付けされ、特定の種類のジョブのみを処理するワーカー間で干渉する必要があります。
今のところ、cron を使用して、いくつかのブローカー (RabbitMQ または beanstalkd) でジョブのデータベース全体をロードしたいと考えています (どちらを使用するかはまだ決めていません)。
しかし、このアプローチは私には見苦しく (タイマーを使用して無限をシミュレートしたり、データベース全体をロードしたりするなど)、欠点があります。すべてラムし、スワップしてから停止します。
他の可能性はありますか?仕事に適切なパターンを使用していませんか? (キューなどは必要ないかもしれません..?)
psこれが重要な場合、私はpythonを使用しています。
php - Memory considerations for long-running php scripts
I want to write a worker for beanstalkd in php, using a Zend Framework 2 controller. It starts via the CLI and will run forever, asking for jobs from beanstalkd like this example.
In simple pseudo-like code:
The $job
has here an __invoke()
method of course. However, some things in these jobs might be running for a long time. Some might run with a considerable amount of memory. Some might have injected the $beanstalk
object, to start new jobs themselves, or have a Zend\Di\Locator
instance to pull objects from the DIC.
I am worried about this setup for production environments on the long term, as perhaps circular references might occur and (at this moment) I do not explicitly "do" any garbage collection while this action might run for weeks/months/years *.
*) In beanstalk, reserve
is a blocking call and if no job is available, this worker will wait until it gets any response back from beanstalk.
My question: how will php handle this on the long term and should I take any special precaution to keep this from blocking?
This I did consider and might be helpful (but please correct if I am wrong and add more if possible):
- Use gc_enable() before starting the loop
- Use gc_collect_cycles() in every iteration
- Unset
$job
in every iteration - Explicitly unset references in
__destruct()
from a$job
(NB: Update from here)
I did run some tests with arbitrary jobs. The jobs I included were: "simple", just set a value; "longarray", create an array of 1,000 values; "producer", let the loop inject $pheanstalk
and add three simplejobs to the queue (so there is now a reference from job to beanstalk); "locatoraware", where a Zend\Di\Locator
is given and all job types are instantiated (though not invoked). I added 10,000 jobs to the queue, then I reserved all jobs in a queue.
Results for "simplejob" (memory consumption per 1,000 jobs, with memory_get_usage()
)
Picking a random job, measuring the same as above. Distribution:
Memory:
The execution code from above is updated to this:
As everybody notices, the memory consumption is in php not leveraged and kept to a minimum, but increases over time.
php - Pheanstalkジョブが終了したかどうかを判断する方法
私は現在、Pheanstalk(beanstalkd)を使用して、複数のワーカーを使用して多数のジョブを処理しています。ワーカーは非同期で実行されるため、すべてのジョブが終了したかどうかを判断する一般的な方法があるかどうか疑問に思っています。
最後に発行されたジョブに「終了」フラグを追加し、ワーカーを使用してそのフラグをチェックすることを考えました。問題は、最後の仕事が必ずしも労働者によって最後の仕事であるとは限らないということです。労働者は電話を切ったり、墜落したりする可能性があります。
ruby-on-rails - 製作中のジェムストーカー
私は Stalker を使用して、実動サーバーで beanstalkd とやり取りしています。私のジョブファイルは次のようになります。
次のコマンドを発行してストーカーを開始しようとしています。
しかし、環境ファイルをロードすると、Rails は本番データベースではなく開発データベースにアクセスしようとし、エラーが発生します。誰もこの問題を解決する方法を知っています!?
ありがとう!