I'm using kazoo=2.2.1, python 2.7, zookeeper 3.4.5--1. I've set up a DataWatch, and if the callback raise an exception I'd like to abort the program. I'm unable to abort with the following code
from kazoo.recipe.watchers import DataWatch
from utils.zookeeper import Zookeeper
import time
import sys
def do_stuff(data, stat):
raise NotImplementedError("abort")
def wrap_do_stuff(data, stat):
try:
do_stuff(data, stat)
except Exception as e:
if data != '':
print e.message
# This does not exit the program
# sys.exit(-1)
# This does not exit the program
# raise e
# This does not exit the program, just stop the watcher
return False
def start():
zookeeper_client = Zookeeper.init_from_config().client
# Someone is writing into this node after creation
new_node_path = zookeeper_client.create('/test/',
ephemeral=True, sequence=True)
path_to_watch = new_node_path
print path_to_watch
datawatcher = DataWatch(zookeeper_client, path_to_watch, wrap_do_stuff)
while True:
time.sleep(2)
print "still alive"
if __name__ == '__main__':
start()
`
How do I abort in wrap_do_stuff()
?