Need help cloning? Visit
is a free Git and Mercurial client for Windows.
is a free Git and Mercurial client for Mac.
-During PyConFr 2012, we spent, `Jonathan Dorival`_, `Mathieu
-Agopian`_ and `me`_, two days sprinting on `Circus`_.
+During PyConFr 2012, `Jonathan Dorival`_, `Mathieu
+Agopian`_ and `me`_, spent two days sprinting on `Circus`_.
Circus is a process & socket manager. It can be used to monitor and
control processes and sockets.
-At Novapost, we usually launch processes on different (virtual) machines.
-So we wanted `Circus`_ to manage processes launched on different servers.
+At Novapost, we usually launch processes on different (virtual) machines,
+so we wanted `Circus`_ to manage processes launched on different servers.
.. _`Circus`: http://docs.circus.io/
.. _`Jonathan Dorival`: http://github.com/jojax/
We had the chance to discuss this with `Tarek Ziadé`_ and `Alexis
Metaireau`_ at PyconFr 2012. They have the same needs at Mozilla so
-we seized the opportunity and brainstormed about our needs. We arrived to
-this conclusion :
+we seized the opportunity and brainstormed about our needs, and finally
+ended up with this conclusion:
.. _`Tarek Ziadé`: http://ziade.org/
.. _`Alexis Metaireau`: http://blog.notmyidea.org/
-* An unique interface to manage processes on different ``circusd``
- called ``circusmeta``
-* To manage a unique ``circusd`` node or a pool of ``circusd`` nodes
-* To run a new ``circusd`` and automatically be able to manage it
-* To add a new worker on a specific ``circusd`` node
-* To add a new worker on a service and let ``circusmeta`` choose
- which node will start it
-* Have global statistics about the cluster and use them in plugins
-* To run a command on a specific node or every nodes
+* An unique interface to manage processes on different circus nodes
+ (eventually called ``circusmeta``)
+* To manage an unique circus instance or pool of nodes the same way.
+* To start new circus nodes and automatically be able to manage them
+* To start new workers on specific nodes (by explicitely giving the name of the
+* To add a new worker on the cluster and let ``circusmeta`` chose
+ which node it will be started on.
+* To aggregate statistics about the cluster
+* To run commands on a specific node or every nodes
We don't want
-* To start a new virtual machine
-* To register some watcher on an empty ``circusd``
+* To manage the virtual machines flow
+* To register some watchers on an empty ``circusd``
-So after this brainstorming we ended up with this implementation roadmap:
+After this brainstorming we ended up with this implementation roadmap:
* Have a default name for the ``circusd`` server but also be able to
- rename it with the configuration and with a ``circusctl`` command.
-* Modify the `stats_endpoint` protocol, to prefix stats with the
- ``circusd`` unique name of the node
+ rename (via a config file or a circus command)
+* Modify the stats management to prefix stats with the unique name of the node
* Create a socket on ``circusmeta`` that will agregate every ``circusd
stats_endpoint`` on a unique socket base of the pool configuration.
-* Adapt existing circus tools (circus-top, circushttpd, circusctl, ...) to manage
- circusd nodes.
+* Adapt existing circus tools (circus-top, circushttpd, circusctl, ...) to handle
A word about circusmeta
the node name, in order to use the same command for a
unique server or for a pool behind ``circusmeta``.
-The codebase is also allready there, we just need some code to take one
+The codebase is also already there, we still need some code to take one
step back and manage a list of node in ``circus`` tools.