2012-02-14 19 views
10

Tengo un comando de administración Django que hace miles de solicitudes TCP/UDP. He usado Gevent para acelerar esto ya que he reestructurado mi código para que funcione como coroutines. Las conexiones de socket ya no se bloquean, pero por lo que he leído, partes de Django todavía no son verdes. (Por verde, me refiero al uso de greenlets.)Haciendo que Django se ponga verde

¿Podría decirme qué partes de Django no son verdes y qué puedo hacer para que sean verdes? Hay algunas partes relacionadas con DB que aún bloquean, creo. ¿Hay bibliotecas/parches para Django que me ayuden a que sea verde?

No me preocupa demasiado que el ciclo de solicitud/respuesta sea verde o no, por lo tanto, Gunicorn me ayudaría?

Gracias

Respuesta

10

El mono parche GEvent parchara la biblioteca estándar para ser Greenlet amigable. Esto debería tomar una gran cantidad de llamadas Django comunes.

from gevent import monkey; monkey.patch_all() 

En cuanto a las bases de datos, normalmente las interfaces son bloqueadas. Si usa PostgreSQL, mire en psyco_gevent al parche de mono psycopg2 para cooperar con gevent.

2

gevent no ecologará las bibliotecas de terceros siempre que utilicen extensiones C o utilicen otras bibliotecas de terceros que utilicen extensiones C. Si se usan bibliotecas estándar, gevent puede parchearlas.

Algunos controladores de bases de datos se basan por supuesto en la implementación de la base de datos. El hecho de que utilice una biblioteca ecológica no significa que su base de datos se comportará como "verde". Esto también debe invocarse en el nivel de la base de datos. Prosgresql, por ejemplo, admite el procesamiento de comandos asíncronos desde la versión 2.2.

También es posible que desee comprobar Projects using gevent.

Gunicorn le hará la vida más fácil, al menos cuando empiece a implementar su aplicación. También durante el desarrollo recomendaría gunicornio (con gevent) sobre el comando normal django runserver, simplemente porque puede manejar peticiones simultáneas mucho más rápido.

Cuestiones relacionadas