
Circus: A Process and Socket Manager - gklein
http://circus.readthedocs.org/en/0.6/
======
jokull
Really dig this project. Instead of having different projects implement
multiprocess models to use multicore hardware, let Circus bind a socket and
hand over the file descriptor for all processes. It means that instead of
having Gunicorn or uWSGI run multliple processes, just run an efficient single
process worker like gevent or meinheld, all managed by Circus.

The gain here is being able to use a single cli interface to manage processes.
If you have used Heroku, you’ll know that you can increase the number of
processes with a unified cli interface. Allows you to ramp up RQ workers and
scale down the web processes, for example.

There are other features here, such as a pubsub channel for events. I guess
the idea here is to aggregate Circus events in a multiserver environment.

Anyone using this in production?

~~~
tarekmoz
> I guess the idea here is to aggregate Circus events in a multiserver
> environment.

Yeah that's the basis for it. We're planning to add a cross-server feature, so
a single CLI can handle processes across several boxes transparently

There's a branch but we've lacked of time to finish it yet. Soon I hope.

------
tdavis
Circus is awesome. In fact, this Mozilla team has made a bunch of very nice
libraries available; with the latest project I'm working on, I use so many
that I feel I practically work there.

------
lifeisstillgood
This is something about keeping your abstractions simple.

I had never really thought about the way I was running multiple process mgmt
techniques. Interesting.

------
mbq
As far as socket reservation and auto-rebooting is concerned, systemd itself
is a nice solution.

------
drdaeman
Wonder whenever it is capable of working with non-IP sockets (like AF_PACKET
or AF_NETLINK)

~~~
pekk
Innocent question: what are the use cases?

~~~
drdaeman
A PPPoE server implementation, for example. Or a DHCP server (which requires
working with raw Ethernet packets, so no AF_INET here).

