Gearman サーバーのジョブ キューを空にすることはできますか? 私は Gearman 用の python ドライバーを使用していますが、ドキュメントにはキューを空にすることに関する情報がありません。おそらく、Gearman サーバーに直接接続することで、この機能が存在するはずだと思います。
3 に答える
私はこの方法に出くわしました:
/usr/bin/gearman -t 1000 -n -w -f function_name > /dev/null
基本的にすべてのジョブを /dev/null にダンプします。
telnetable管理プロトコル(「管理プロトコル」を検索) にも、キューを空にするコマンドはありません。シャットダウン コマンドしかありません。
ダウンタイムを回避したい場合は、一般的な「ジョブ コンシューマー」ワーカーを作成し、それを使用してキューを空にすることができます。私は、ジョブ名のリストを受け取るスクリプトとして設定し、そこに座ってジョブを受け入れて消費します。
何かのようなもの:
# generic_consumer.py job1 job2 job3
管理プロトコルのstatusコマンドを使用して、関数名とキューのカウントのリストを取得できます。管理プロトコルのドキュメントには、応答の形式が記載されています。
# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730
ドキュメントと PHP で Gearman を使用することからわかる限り、ジョブ キューをクリアする唯一の方法は、Gearmand ジョブ サーバーを再起動することです。永続的なジョブ キューを使用している場合は、永続ストレージとして使用しているものをすべて空にする必要もあります。これが DB ストレージの場合は、すべての行の適切なテーブルを空にする必要があります。
ギアマンドを停止 --> テーブル行を空にする --> ギアマンドを開始
これが十分に明確であることを願っています。