Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making Django go green

I have a Django management command that makes thousands of TCP/UDP requests. I've used Gevent to speed this up as I've restructured my code to work as coroutines. The socket connections no longer block but from what I've read, parts of Django still aren't green. (By green, I mean using greenlets.)

Could you tell me what parts of Django aren't green and what I can do to make them green? There are some DB related parts that still block I think. Are there any libraries/patches for Django that help me make it green?

I'm not too concerned about the request/response cycle being green or not therefore, would Gunicorn help me?

Thanks

like image 792
Mridang Agarwalla Avatar asked Feb 14 '12 19:02

Mridang Agarwalla


1 Answers

The gevent monkey patcher will patch the standard library to be Greenlet friendly. This should take of a lot of common Django calls.

from gevent import monkey; monkey.patch_all()

As far as databases, normally the interfaces are blocking. If you use PostgreSQL look into psyco_gevent to monkey patch psycopg2 to cooperate with gevent.

like image 161
Stephen Diehl Avatar answered Sep 23 '22 14:09

Stephen Diehl