kazoo.interfaces

Kazoo Interfaces

Public API

IHandler implementations should be created by the developer to be passed into KazooClient during instantiation for the preferred callback handling.

If the developer needs to use objects implementing the IAsyncResult interface, the IHandler.async_result() method must be used instead of instantiating one directly.

interface kazoo.interfaces.IHandler[source]

A Callback Handler for Zookeeper completion and watch callbacks

This object must implement several methods responsible for determining how completion / watch callbacks are handled as well as the method for calling IAsyncResult callback functions.

These functions are used to abstract differences between a Python threading environment and asynchronous single-threaded environments like gevent. The minimum functionality needed for Kazoo to handle these differences is encompassed in this interface.

The Handler should document how callbacks are called for:

  • Zookeeper completion events
  • Zookeeper watch events
spawn(func, *args, **kwargs)[source]

Spawn a function to run asynchronously

Parameters:
  • args – args to call the function with.
  • kwargs – keyword args to call the function with.

This method should return immediately and execute the function with the provided args and kwargs in an asynchronous manner.

dispatch_callback(callback)[source]

Dispatch to the callback object

Parameters:callback – A Callback object to be called.
name

Human readable name of the Handler interface

rlock_object()[source]

Return an appropriate object that implements Python’s threading.RLock API

stop()[source]

Stop the handler. Should block until the handler is safely stopped.

sleep_func

Appropriate sleep function that can be called with a single argument and sleep.

event_object()[source]

Return an appropriate object that implements Python’s threading.Event API

create_connection()[source]

A socket method that implements Python’s socket.create_connection API

start()[source]

Start the handler, used for setting up the handler.

lock_object()[source]

Return an appropriate object that implements Python’s threading.Lock API

timeout_exception

Exception class that should be thrown and captured if a result is not available within the given time

async_result()[source]

Return an instance that conforms to the IAsyncResult interface appropriate for this handler

select()[source]

A select method that implements Python’s select.select API

socket()[source]

A socket method that implements Python’s socket.socket API

Private API

The IAsyncResult documents the proper implementation for providing a value that results from a Zookeeper completion callback. Since the KazooClient returns an IAsyncResult object instead of taking a completion callback for async functions, developers wishing to have their own callback called should use the IAsyncResult.rawlink() method.

interface kazoo.interfaces.IAsyncResult[source]

An Async Result object that can be queried for a value that has been set asynchronously

This object is modeled on the gevent AsyncResult object.

The implementation must account for the fact that the set() and set_exception() methods will be called from within the Zookeeper thread which may require extra care under asynchronous environments.

set(value=None)[source]

Store the value. Wake up the waiters.

Parameters:value – Value to store as the result.

Any waiters blocking on get() or wait() are woken up. Sequential calls to wait() and get() will not block at all.

get_nowait()[source]

Return the value or raise the exception without blocking.

If nothing is available, raise the Timeout exception class on the associated IHandler interface.

set_exception(exception)[source]

Store the exception. Wake up the waiters.

Parameters:exception – Exception to raise when fetching the value.

Any waiters blocking on get() or wait() are woken up. Sequential calls to wait() and get() will not block at all.

successful()[source]

Return True if and only if it is ready and holds a value

get(block=True, timeout=None)[source]

Return the stored value or raise the exception

Parameters:
  • block (bool) – Whether this method should block or return immediately.
  • timeout (float) – How long to wait for a value when block is True.

If this instance already holds a value / an exception, return / raise it immediately. Otherwise, block until set() or set_exception() has been called or until the optional timeout occurs.

exception

Holds the exception instance passed to set_exception() if set_exception() was called. Otherwise None

value

Holds the value passed to set() if set() was called. Otherwise None

Register a callback to call when a value or an exception is set

Parameters:callback (func) – A callback function to call after set() or set_exception() has been called. This function will be passed a single argument, this instance.
ready()[source]

Return True if and only if it holds a value or an exception

Remove the callback set by rawlink()

Parameters:callback (func) – A callback function to remove.
wait(timeout=None)[source]

Block until the instance is ready.

Parameters:timeout (float) – How long to wait for a value when block is True.

If this instance already holds a value / an exception, return / raise it immediately. Otherwise, block until set() or set_exception() has been called or until the optional timeout occurs.