[pyar] Django server muy lento

465 views
Skip to first unread message

matias benedetto

unread,
Feb 10, 2011, 2:14:27 AM2/10/11
to Python Argentina
Hola!
Tengo un problema con el servidor local de pruebas de Django, tarda casi ¡30 segudos! en recargar una pagina.
El problema creo que viene dado por como son servidos los archivos estáticos de esa página. 20 imagenes pequeñas. Aclaro que no carga cosas externas, estan todos las imagenes y el js en mi pc, y que django no arroja ningun error, solo se toma su prolongado tiempo.
Digo esto porque las vistas que son solo texto procesado por el servidor cargan al instante.
Probé varias soluciones que proponian en stackoverflow por ejemplo como desactivar el ipv6 del firefox, probar con otro navegadores, acceder a la pagina con 127.0.0.1 en vez de localhost, pero sigue igual de lento.

El metodo que estoy usando para los archivos estaticos es este [0]. Y tengo django 1.1 en ubuntu 10.04.

Estoy haciendo algo mal?
tengo que abandonar el servidor de prubeas y pasarme al apache?

Saludos!

Angel Freire

unread,
Feb 10, 2011, 6:29:28 AM2/10/11
to Python Argentina
2011/2/10 matias benedetto <matias.b...@gmail.com>:
> _______________________________________________
> pyar mailing list py...@python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

El webserver de Django no es multithread. Es decir que los pedidos se
atienden de medida secuencial:

* Primero tu browser pide tal pagina y el webserver le entrega el HTML.
* Tu browser lee ese HTML y ve que otras cosas necesita (js, img, css,
etc), y los va a pedir en una o mas conexiones al webserver.
* El webserver va tomando pedido por pedido y entregando las cosas de a uno.

De ahí que se percibe que es lento. Si estas desarrollando suele ser
aceptable esa velocidad (aunque 30 segundos no suena muy aceptable),
lo que podrías hacer es servir los contenidos estáticos (imágenes, CSS
y JavaScript) desde otro webserver como puede ser Apache y seguir
usando el dev-server para hacer tus pruebas.

También hay alternativas al servidor web de django muy interesantes
para desarrolladores como, por ejemplo, run server plus [0] que
debería permitirte bajar esos tiempos de carga.

Saludos,
Angel

[0] https://github.com/django-extensions/django-extensions/blob/master/docs/runserver_plus.rst

--
http://blog.cuerty.com

"If you want to set off and go develop some grand new thing, you don't
need millions of dollars of capitalization. You need enough pizza and
Diet Coke to stick in your refrigerator, a cheap PC to work on and the
dedication to go through with it."
- John Carmack
_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

Daniel Moisset

unread,
Feb 10, 2011, 8:47:18 AM2/10/11
to Python Argentina
2011/2/10 matias benedetto <matias.b...@gmail.com>:

> Hola!
> Tengo un problema con el servidor local de pruebas de Django, tarda casi ¡30
> segudos! en recargar una pagina.
> El problema creo que viene dado por como son servidos los archivos estáticos
> de esa página. 20 imagenes pequeñas. Aclaro que no carga cosas externas,
> estan todos las imagenes y el js en mi pc, y que django no arroja ningun
> error, solo se toma su prolongado tiempo.

Me suena a que hay algo mal ahi, no necesariamente en tu django sino
capaz en algun otro lado (tu browser, tu setup de red), porque con 20
imagens, aun usando el test server, 30 segundos es demasiado. Si usas
el tab de net del firebug (plugin de firefox) capaz ayuda a ver que se
esta demorando

Si lo que queres es un servidor facil de usar como el de prueba pero
multithredeado (tecnicamente, es multiproceso), podes probar con
gunicorn. Lo instalas con easy_install y despues en el directorio de
tu proyecto corres:

gunicorn_django --workers=2

(y ahi tenes un server con 2 procesos)

Saludos,
D.

> Digo esto porque las vistas que son solo texto procesado por el servidor
> cargan al instante.

Mira el grafiquito que manda el firebug y seguramente clarifique bastante esto

Saludos,
D.

zodman

unread,
Feb 10, 2011, 6:06:18 PM2/10/11
to Python Argentina
tambien tiene mucho que ver la cantidad de sql que envias ...

instala el django-devserver para ver el output en la terminal de los
queryis que ejecutas

2011/2/10 Daniel Moisset <dmoi...@machinalis.com>:

--
Andres Vargas
www.zodman.com.mx

matias benedetto

unread,
Feb 11, 2011, 5:51:42 AM2/11/11
to Python Argentina
Siguiendo sus recomendaciones lo que hice fué:

1. Inspeccione la pestaña Red de Firebug y vi que al parecer la demora no la estaban produciendo las imagenes, ya que la que demoraba 21 segundos era la primer peticion get, las siguientes peticiones a las imagenes tardaban algunos ms.

2. Para entender mejor el problema decidi a instalar el dev-server, lo que trajo consecuencias extrañas.
Ahora la vista que tardaba los 20 segundos en cargar tiene 2 comportamientos aleatoriamente distintos cada vez que la cargas.
.A veces carga todos los datos traidos de la BD y las imagenes al instante pero el navegador queda como si aun estuviera cargando los 20 segundos.
.A veces no carga nada y tira este error [0] en texto plano, no con los estilos del debug de django

El admin, que estaba funcionando bien, dejo de andar completamente, y arroja el mismo error que a veces arroja la vista [0]

No hice ningun cambio mas que los necesarios para instalar el dev server.
Por si sirve dejo la vista que se demoraba, que es muy simple, aca: [1]




 

Daniel Moisset

unread,
Feb 11, 2011, 7:46:12 AM2/11/11
to Python Argentina
2011/2/11 matias benedetto <matias.b...@gmail.com>:

> Siguiendo sus recomendaciones lo que hice fué:
> 1. Inspeccione la pestaña Red de Firebug y vi que al parecer la demora no la
> estaban produciendo las imagenes, ya que la que demoraba 21 segundos era la
> primer peticion get, las siguientes peticiones a las imagenes tardaban
> algunos ms.

Tenes un desagregado de esos 21 segundos? firebug te dice cuanto de
eso es resolver, cuanto mandar, cuanto recibir, cuanto esperar

matias benedetto

unread,
Feb 12, 2011, 9:14:40 PM2/12/11
to Python Argentina
Seguí probando el dev-server y me di cuenta que descativando una de las opciones que activé, pero que no vienen activadas por defecto el problema de que la pagina quede cargando un rato largo descaparece. Asi por ahora me está funcioando todo. El módulo problemático es devserver.modules.profile.MemoryUseModule.

DEVSERVER_MODULES = (
    'devserver.modules.sql.SQLRealTimeModule',
    'devserver.modules.sql.SQLSummaryModule',
    'devserver.modules.profile.ProfileSummaryModule',
 
    # Modules not enabled by default
    'devserver.modules.ajax.AjaxDumpModule',
    #'devserver.modules.profile.MemoryUseModule',
    'devserver.modules.cache.CacheSummaryModule',
 )

Me parece muy piola este dev-server, todavia no entiendo bien todos los datos que arroja pero poder mirar las consultas SQL mientras las va haciendo es muy útil.


Graciaaasss por la ayuda
Saludos!!
matias.




zodman

unread,
Feb 13, 2011, 8:24:10 PM2/13/11
to Python Argentina
habilita solamente los de SQL el de profiler tarda mucho en poder
sacar la memoria

2011/2/12 matias benedetto <matias.b...@gmail.com>:

> _______________________________________________
> pyar mailing list py...@python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

--
Andres Vargas
www.zodman.com.mx

Reply all
Reply to author
Forward
0 new messages