10

Gearman サーバーのジョブ キューを空にすることはできますか? 私は Gearman 用の python ドライバーを使用していますが、ドキュメントにはキューを空にすることに関する情報がありません。おそらく、Gearman サーバーに直接接続することで、この機能が存在するはずだと思います。

4

3 に答える 3

14

私はこの方法に出くわしました:

/usr/bin/gearman -t 1000 -n -w -f function_name > /dev/null

基本的にすべてのジョブを /dev/null にダンプします。

于 2012-09-18T18:36:46.947 に答える
6

telnetable管理プロトコル(「管理プロトコル」を検索) にも、キューを空にするコマンドはありません。シャットダウン コマンドしかありません。

ダウンタイムを回避したい場合は、一般的な「ジョブ コンシューマー」ワーカーを作成し、それを使用してキューを空にすることができます。私は、ジョブ名のリストを受け取るスクリプトとして設定し、そこに座ってジョブを受け入れて消費します。

何かのようなもの:

# generic_consumer.py job1 job2 job3

管理プロトコルのstatusコマンドを使用して、関数名とキューのカウントのリストを取得できます。管理プロトコルのドキュメントには、応答の形式が記載されています。

# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730
于 2011-01-25T13:12:52.100 に答える
5

ドキュメントと PHP で Gearman を使用することからわかる限り、ジョブ キューをクリアする唯一の方法は、Gearmand ジョブ サーバーを再起動することです。永続的なジョブ キューを使用している場合は、永続ストレージとして使用しているものをすべて空にする必要もあります。これが DB ストレージの場合は、すべての行の適切なテーブルを空にする必要があります。

ギアマンドを停止 --> テーブル行を空にする --> ギアマンドを開始

これが十分に明確であることを願っています。

于 2011-01-20T10:19:14.623 に答える