Hacker News new | past | comments | ask | show | jobs | submit login
Circus: A Process and Socket Manager (readthedocs.org)
45 points by gklein on March 10, 2013 | hide | past | favorite | 9 comments



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?


> 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.


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.


This is something about keeping your abstractions simple.

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


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


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


Whatever the python socket module supports, we can support.


Innocent question: what are the use cases?


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: