summaryrefslogtreecommitdiff
path: root/docs/index.rst
blob: 9286f19dc05ae1cb026c8d57c29ae20aa123bcef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
=====
kazoo
=====

Kazoo is a Python library designed to make working with :term:`Zookeeper` a
more hassle-free experience that is less prone to errors.

Kazoo features:

* A wide range of recipe implementations, like Lock, Election or Queue
* Data and Children Watchers
* Simplified Zookeeper connection state tracking
* Unified asynchronous API for use with greenlets or threads
* Support for `gevent`_ >= 1.2
* Support for `eventlet`_
* Support for Zookeeper 3.3, 3.4, and 3.5 servers
* Integrated testing helpers for Zookeeper clusters
* Pure-Python based implementation of the wire protocol, avoiding all the
  memory leaks, lacking features, and debugging madness of the C library

Kazoo is heavily inspired by `Netflix Curator`_ simplifications and helpers.

.. note::

    You should be familiar with Zookeeper and have read the `Zookeeper
    Programmers Guide`_ before using `kazoo`.

Reference Docs
==============

.. toctree::
   :maxdepth: 1

   install
   basic_usage
   async_usage
   implementation
   testing
   api
   Changelog <changelog>
   Contributing <contributing>

Why
===

Using :term:`Zookeeper` in a safe manner can be difficult due to the variety of
edge-cases in :term:`Zookeeper` and other bugs that have been present in the
Python C binding. Due to how the C library utilizes a separate C thread for
:term:`Zookeeper` communication some libraries like `gevent`_ (or `eventlet`_)
also don't work properly by default.

By utilizing a pure Python implementation, Kazoo handles all of these
cases and provides a new asynchronous API which is consistent when
using threads or `gevent`_ (or `eventlet`_) greenlets.

Source Code
===========

All source code is available on `github under kazoo <https://github.com/python-
zk/kazoo>`_.

Bugs/Support
============

Bugs should be reported on the `kazoo github issue tracker
<https://github.com/python-zk/kazoo/issues>`_.

The developers of ``kazoo`` can frequently be found on the Freenode IRC
network in the `\#zookeeper`_ channel.

For general discussions and support questions, please use the
`python-zk <https://groups.google.com/forum/#!forum/python-zk>`_ mailing list
hosted on Google Groups.

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`glossary`

.. toctree::
   :hidden:

   glossary

License
=======

``kazoo`` is offered under the Apache License 2.0.

Authors
=======

``kazoo`` started under the `Nimbus Project`_ and through collaboration with
the open-source community has been merged with code from `Mozilla`_ and the
`Zope Corporation`_. It has since gathered an active community of over two
dozen contributors from a variety of companies (twitter, mozilla, yahoo! and
others).

.. _Apache Zookeeper: http://zookeeper.apache.org/
.. _Zookeeper Programmers Guide: https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html
.. _Zookeeper Recipes: http://zookeeper.apache.org/doc/current/recipes.html#sc_recoverableSharedLocks
.. _Nimbus Project: http://www.nimbusproject.org/
.. _Zope Corporation: http://zope.com/
.. _Mozilla: http://www.mozilla.org/
.. _Netflix Curator: https://github.com/Netflix/curator
.. _gevent: http://gevent.org/
.. _eventlet: http://eventlet.net/
.. _\#zookeeper: irc://chat.freenode.net/zookeeper