Gunicorn vs Chaussette vs Meinheld

1,799 views
Skip to first unread message

Santiago Basulto

unread,
Oct 22, 2012, 7:09:56 AM10/22/12
to django...@googlegroups.com
Hello people. Reading about Circus[1] I ran into a couple of different "WSGI servers" that I haven't heard before (Chaussette[2] and Meinheld[3]). My question is if those are all similar to Gunicorn (and can be used instead of the last) or are just complementary servers.


One thing that really confuses me is this:

Meinheld claims that you can use it with Gunicorn.

>gunicorn --workers=2 --worker-class="egg:meinheld#gunicorn_worker" gunicorn_test:app

And Chaussette claims that you can use Meinheld as the backend.

This is really confusing. What's the advantages of one over the other? I'm using Gunicorn right now and works pretty well. Have you used any of the others?

Santiago Basulto

unread,
Oct 23, 2012, 7:48:49 AM10/23/12
to django...@googlegroups.com
Wow, thank you very much Tarek for your explanation. I'm willing to
try Circus, seems pretty awesome indeed. There's just one thing 1 need
to ask. As a summary...

Are Chaussette and Meinheld WSGI servers just like Gunicorn, can those
be used with Nginx as a reverse proxy?

On Mon, Oct 22, 2012 at 8:28 AM, Tarek Ziadé <ziade...@gmail.com> wrote:
> tl;dr: with Circus and Chaussette you get a nice process management tool
> where you can manage all your processes in a single place (web
> workers,celery, redis, rabbit, elastic search etc..)
>
> long story: Circus is able to bind the sockets and share them with the
> processes it manages. The advantage is that you remove one layer of process
> management
>
> In a classical stack, if you have Gunicorn running 5 workers, and let's say
> - one celeryd and one redis running, you end up with 2 layers of process
> managers: the one you use to manage gunicorn, redis and celeryd -- and
> gunicorn that manages its 5 workers. You end up not being able to interact
> with your web workers the same way you'd do with your other processes in
> your stack.
>
> using Circus, you can have a single layer of processes management. More
> explanations here:
> http://circus.readthedocs.org/en/0.5.2.1/sockets/#circus-stack-v-s-classical-stack
>
> As for Meinheld, it can act as a standalone wsgi web server, like uWsgi for
> instance - and Chaussette offers it as a backend. And it also happens to
> allow you to bind gunicorn - which in my opinion does not make much sense
> since it's already a wsgi server.
>
> Cheers
> Tarek
>
>
>
>
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-users/-/IYcPGsXy8WYJ.
>
> To post to this group, send email to django...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.



--
Santiago Basulto.-

Tarek Ziadé

unread,
Oct 23, 2012, 7:56:26 AM10/23/12
to django...@googlegroups.com


On Tuesday, October 23, 2012 1:49:20 PM UTC+2, Santiago Basulto wrote:
Wow, thank you very much Tarek for your explanation. I'm willing to
try Circus, seems pretty awesome indeed.

You are welcome. If you need more help we're hanging in #mozilla-circus on Freenode
 
There's just one thing 1 need
to ask. As a summary...

Are Chaussette and Meinheld WSGI servers just like Gunicorn, can those
be used with Nginx as a reverse proxy?

Yeah they all do the same thing: serve HTTP requests on a given port (or unix socket file for some of them)

So you can reverse proxy them the same way in Nginx.

Cheers
Tarek

 

Tarek Ziadé

unread,
Oct 23, 2012, 10:07:59 AM10/23/12
to django...@googlegroups.com


On Tuesday, October 23, 2012 3:47:43 PM UTC+2, mmrs151 wrote:
Hi Tarek, is it not same as Supervisor or upstart, as you are saying they all are process manager.

 - Circus is a process manager like Supervisord or upstart
 - Circus also binds sockets, like Gunicorn or Apache or Nginx
 - Chaussette is a WSGI server with many backends. It can be used on sockets already bound by Circus
 - Meinheld provides async features - it can be used as a Gunicorn worker *or* through its bundled wsgi web server.
 
Possible stacks:

Nginx => Gunicorn => Meinheld  and Supervisord
 
  It is a very classical stack in the Py world and Supervisor manages Gunicorn which in turn manage meinheld workers.

Nginx => Circus => Chaussette+Meinheld

  It is quite similar to the orevious except that we have a single tool to manage all the processes of the stack (Circus)



Cheers
Tarek

Reply all
Reply to author
Forward
0 new messages