with valid manually formularios formmodel form fields ejemplos creating create all django webkit broken-pipe

valid - Django+WebKit=tubería rota



django render forms manually (6)

Estoy ejecutando el servidor de desarrollo Django 1.2 y recibo estos mensajes de error de Broken Pipe cada vez que carga una página con Chrome o Safari. Mi compañero de trabajo también está recibiendo el error cuando carga una página desde su servidor de desarrollo. No tenemos estos errores cuando usamos Opera o Firefox.

Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 281, in run self.finish_response() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 321, in finish_response self.write(data) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 417, in write self._write(data) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 300, in write self.flush() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 286, in flush self._sock.sendall(buffer) error: [Errno 32] Broken pipe

¿Puede alguien ayudarme? Me estoy volviendo loco por esto!


En el caso de que esto suceda con un cliente de JavaScript , una solución podría ser la siguiente. preventDefault agregar preventDefault y return false al principio y al final de su controlador de eventos como:

$(''#btn_analyze'').click(function(e) { e.preventDefault() $.post(''/api/v1/analyzer/'', data, "json").done(function(response) { //... }).fail(function() { Logger.error(" Error ") }) return false }) // analyze click


Esto no es un problema de Django. Es muy probable que su navegador esté haciendo algo erróneo.

Este es un error común que ocurre cuando su navegador cierra la conexión mientras el servidor de desarrollo todavía está ocupado enviando datos.

Compruebe este boleto de Django para más información.


Esto puede deberse a un error en la función javascript que envía la llamada ajax.

Por ejemplo, la función puede ser activada por un evento de clic en un enlace, y si la acción predeterminada de enlace no se evita, recibirá una solicitud secundaria de inmediato y el navegador cerrará la conexión anterior sin esperar a que la respuesta termine. . Tuve el mismo problema cuando me olvidé de agregar return false al controlador de eventos.

El mismo síntoma puede ocurrir si el controlador de eventos que activa ajax lanza una excepción.

Depure cuidadosamente la función que realiza la solicitud ajax y el valor de retorno de esa función.


Hace poco me encontré con este problema con el servidor django v1.1.1 dev y Chrome 7.0.517.44.

La "solución" que he descubierto siempre está realizando una actualización (mantenga presionada la tecla Mayús y haga clic en el botón de recarga en Chrome) en la página después de la carga inicial, lo que hace que Chrome ignore su caché para cualquier recurso solicitado por la actualización.

Como tal, esto me lleva a creer que es un problema con la notoria tendencia de Chrome a almacenar en caché todo lo que pueda; incluso cuando no debería. Supongo que Chrome está realizando una solicitud de recursos y luego interrumpe la conexión para dicho recurso una vez que se da cuenta de que tiene el recurso en caché.

Esto sería casi una solución soportable, excepto que cualquier solicitud AJAX todavía causará problemas.


Tuve un problema posiblemente relacionado.

Mientras utilizaba Safari y Chrome en Windows, en mi máquina local en mi django runserver, algunas vistas no respondían al azar a las solicitudes POST de ajax.

La solución fue esta:

Los datos que pasaba a la vista a través de POST eran solo una clave / par de valores: "acción = eliminar". Ahora, en realidad no estaba usando estos datos en mi opinión. Una vez que asigné los datos a una var en mi vista, (es decir, foo = request.POST [''acción'']), la vista devolvería una respuesta a las solicitudes ajax cada vez.

Absolutamente loco!


Una tubería rota ocurre cuando el navegador cierra la conexión con el servidor. Este problema sucedió conmigo antes en la solicitud de publicación ajax asociada con <a href="... porque olvidé agregar e.preventDefault() en la función del controlador de clic. Entonces, lo que sucedió es que el navegador envía la solicitud de publicación y cierra la conecte y envíe otra solicitud de obtención. Por lo tanto, verá como la solicitud de publicación fue cancelada por el navegador.