2

Python モジュール kazoo を使用して zNode で開始された datawatch プロセスを明示的に停止するにはどうすればよいですか? 以下は、データウォッチを作成した方法です

from   kazoo.recipe.watchers    import DataWatch
datawatch = DataWatch(client=zookeeper_client, path=path_to_znode, func=callback_function)

私はkazoo wikiを調べて、以下の方法を見つけました。

  1. 渡されたコールバック メソッド (ここでは callback_function) から False を返すと、zNode でのデータ ウォッチが停止します。しかし、 callback_function はユーザーによって処理され、私の手では処理されないため、この方法は私には適していません。
  2. プロセスが停止すると、datawatch は自動的に強制終了されます。しかし、私はプロセスを停止したくありません。
  3. これは私が現在使用しているハッキーな方法です。datawatchクラスの下にプライベートメンバ変数「_stopped」があります。私はそれをtrueに設定しています。

    datawatch._stopped = True
    

誰かがここでより良い解決策を提案できますか. ありがとう。

4

1 に答える 1

1

DataWatch Docにも次のように書かれています。

クライアント接続が (close コマンドを使用して) 閉じられると、DataWatch は更新を取得しなくなります。そのため、zookeeper クライアントを停止するだけで十分です。

from kazoo.client import KazooClient

zk = KazooClient(hosts='127.0.0.1:2181')
zk.start()
datawatch = DataWatch(client=zk, path=path_to_znode, func=callback_function)
# time pass....
zk.stop()
于 2016-12-19T14:20:05.373 に答える