問題タブ [gearman]
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 - Net_Gearmanはワーカー関数内からjob_idにアクセスしますか?
現在のワーカー関数内から現在のジョブのjob_idにアクセスしようとしているので、現在のワーカー関数と同じキーで結果をmemcachedに保存できます。これを達成する方法はありますか?
php - PHP/Net_Gearman を使用した Gearman、他のワーカーから呼び出されたジョブを実行するワーカーが応答しなくなる
私はギアマンを使用して、実行時間の長いタスクを複数のワーカー サーバーに分散しています。ワーカー タスクの 1 つで、別のバックグラウンド ジョブを呼び出そうとしました。バックグラウンド ジョブは別のワーカーによって正常に実行されます... しかし、そのワーカー プロセスは、後で Gearman に追加された新しいジョブに応答しません。
何が起こっているのか知っている人はいますか?これがギアマンの特徴?
編集:
また、ワーカーを再起動すると、他のワーカーによってキューに入れられたタスクが繰り返されます。Gearman は、ジョブが完了したことを認識していないようです。
編集2:
試した:
他のワーカーから呼び出されたワーカー関数内から。これは私が受け取る出力です:
編集3:
さて、私はこれを解決するハッキーな方法を思いつきました。以下は、関連するコードのスニペットです。私は自分のプロジェクトに codeigniter を使用しており、私のギアマン サーバーは配列として格納されています。ジョブ コードで接続が null かどうかをテストし、null の場合は、ランダムなギアマン サーバーを使用して再確立します。私はこれが悪いと確信しているので、誰かが洞察を改善した場合、私はそれを非常に感謝します.
gearman - ギアマンと信頼できない外部依存関係を持つ再試行ワーカー
私はgearmanを使用して、さまざまな異なるジョブをキューに入れています。その中には、いつでもすぐにサービスを提供できるものと、信頼性の低い外部サービスを必要とするために「失敗」するものがあります。(たとえば、電子メールを送信するには、頻繁に使用できないSMTPサーバーが必要になる場合があります。)
外部サービスがダウンした場合、そのサービスを必要とするすべてのジョブをキューに残し、サービスが再び利用可能になるまで1つのジョブをときどき(たとえば、数分ごとに)再試行したいと思います。(サービスが何時間も利用できなかった場合は、オプションで電子メールを送信することもできます。)
ただし、失敗したサービスを必要としない仕事をできるだけ早く労働者に引き継いでほしい。これはどのように達成できますか?(必要に応じて、ロジックの一部をワーカーに配置できてうれしいですが、ワーカー側でスロットルするのは少し「遅い」ようです。)
php - バックグラウンドでギアマンワーカーを実行する
PHP5.3.8でUbuntuNattyを使用しています。Gearmanをサーバーで動作させました。
PHPマニュアルから取得したいくつかのスクリプトを使用していくつかのテストを行いましたが、すべて問題なく動作します。
ただし、ワーカーをバックグラウンドで実行する方法があるかどうかを知りたいのですが、それを監視して、複数のワーカーの状況に移行したときに、自分が何人のワーカーを持っているかを追跡できるようにします。働く。
通常、私は2つのターミナルを開く必要があります。1つはワーカー用、もう1つはクライアント用です。phpスクリプトが実行された後、ワーカー用のものは有効に「スタック」します。
前もって感謝します。
gearman - Monit で Gearmand デーモンを監視するには?
したがって、gearman サーバーを監視するための構成ファイルは次のとおりです。
monit.log から
しかし、Monit はプロセスの開始に失敗したと言っています。誰かがそれを機能させる方法を知っていますか? 前もって感謝します。
php - PHPとGearmanの複数のプロセスの追加を監視
最近、PHP5-FPM、Gearman、Supervisorを使用してUbuntuNattyをセットアップしました。Gearmanワーカーを実行するようにSupervisord構成を編集しました。
lsof -i -P
スーパーバイザーを実行する前の関連情報(gearmandプロセスとphpプロセスのみを表示)は次のとおりです。
そして、これが私が私を追いかけたときに私が得るものlsof -i -P
です/etc/init.d/supervisor stop && /etc/init.d/supervisor start
。
監視対象自体のリストが表示されません。監視対象をコマンドの1つとして表示する必要がありますか?!
とにかく、私が停止して再開(または再起動)すると、監視対象は次のようになります。
監視を停止して開始するたびに、別のphpプロセスが作成され、次に別のプロセスが作成されるようです。ギアマンドを再起動したときだけ、通常の状態に戻り/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start
ます。
これは私には異常に思えます。私が監督をやめると、それはやめることになっているということです。
これは監視対象の動作方法ですか?!これを防ぐ方法はありますか?!
前もって感謝します。
編集
問題の原因を突き止めました。これは、supervisord.confおよび私のinitスクリプトとの小さな競合でした。
私のsupervisord.confファイルには次の設定がありました。
しかし、私のinitスクリプトに/etc/init.d/supervisord
は次の設定がありました。
そのため、supervisord.confの設定を、initスクリプトの設定と一致するように変更しました。
stopsignal=KILL
また、 supervisord構成ファイル(supervisord.conf)のプログラム構成に追加しました。
指示してくれたミナズに感謝します。
php - コマンド ラインから Gearman PHP を実行しているセグメンテーション エラー
PHP 5.3.5 およびPECL Gearman 0.8.0で Ubuntu Natty を使用しています。バージョン情報は次のとおりです。
コマンド ラインから Gearman クライアントを実行しようとすると、セグメンテーション エラーが発生します (すでにワーカーを実行しています)。
コマンドラインで得られるものは次のとおりです。
これが私のワーカーコードです:
そして、ここに私のクライアントコードがあります:
編集
セグメンテーション違反は Imagick によって引き起こされたようです。そこで、この問題に対処するために次のことを行いました。
- imagick を削除します
dpkg --purge --force-all php5-imagick
。PHPをセットアップするときにこれをインストールしました - PHP を再起動します (これは、php のインストール方法によって異なる場合があります)。
- Gearman Job Server を再起動する
/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server
現在、すべてが正常に機能しているようです。
php - Gearman サーバーに接続できません
Gearman でこの問題を引き起こしている原因を知っている人はいますか?
PHP 警告: GearmanClient::doBackground(): gearman_connection_flush: 接続できませんでした
Gearman タスクを実行するために別のサーバーに接続しようとしていますが、PECL PHP Gearman パッケージを使用しています。
python - Python Gearman はバックグラウンド タスクからデータを取得します
バックグラウンドタスクでギアマンを使用して、ワーカーからデータの進行状況を取得しようとしています。ドキュメントでは、send_job_data と send_job_status というメソッドが表示されていますが、バックグラウンドで最初のメソッドが機能しません (job.data_updates にデータが表示されません) が、job.status でステータスが変更されます。
私はテスト ワーカーにこのコードを使用しています: from gearman import GearmanWorker import time
クライアントからのこのコード: from gearman import GearmanClient client = GearmanClient(['192.168.1.79:4730'])
このコード (ブロッキング) は正常に動作します。
そして、このクライアントは正常に動作しません(タスクのステータスを更新せず、データ/結果を取得しません):(
どうすればこのデータを正常に取得できますか? 私のバックグラウンド タスクは数時間動作し、メッセージでステータスに関する情報を送信するためです。
python - fabfile を使用しないファブリックでのリモート ssh
fabric と gearman を使用して一連のコマンドをリモートで実行するプログラムを作成しています。
以下は、Gearman のクライアント コードです。
以下は私のワーカーコードです
問題は、ワーカーとクライアント コードを実行しているときに、ホスト名を提供したにもかかわらず、ワーカーが引き続きホスト名を要求することです。Fabric でホスト名を設定する他の方法はありますか? サブプロセスを生成してファブリック コマンドを実行するつもりはありません。