On Sun, Jul 21, 2013 at 11:39 AM, Juan Luis Boya <ntr...@gmail.com> wrote:
> * An asynchronous server may be attending many client connections at a time
> for each worker thread. Concurrency is achieved within the thread using an
> application specific dispatcher. In an asynchronous server, there is only
> one blocking call accepted, which selects events from all connections.
> Typically this call is select(), epoll() or kqueue() depending on the
> system. **Other blocking calls must not be used because they would block the
> entire server until they return, preventing all available processing for
> other connections and thus killing server performance**. Therefore,
> asynchronous programming impose additional restrictions to the programmer,
> like:


this is mostly right; but python, being a high level language, leaves
a lot of space to change things.

greenlets, gevents and eventles take advantage of that, monkepatching
several crucial parts of the standard library, making it
asynchronous-friendly.  in the end, reasonably good code becomes
mostly good for an asynchronous sever.

That's what happens when you run use gunicorn to run Django, which is
a very popular option (and isn't bad at all).  An asynchronous
FCGI-WSGI tool could have a similar performance without any changes in
Django.

in fact, i still think that maybe (just maybe) the easiest would be to
replace the HTTP parser in gunicorn with an FCGI one, keeping all the
asynchronous structure and WSGI handling code.

--
Javier

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to