publica libreria httpsconnection getsearch example developers developer cuenta conn commands python twitter oauth wsgi httplib

python - libreria - Error de httplib CannotSendRequest en WSGI



twitter platform (2)

He usado dos bibliotecas Othon de python diferentes con Django para autenticarme con Twitter. La configuración está en apache con WSGI. Cuando reinicio el servidor todo funciona bien durante unos 10 minutos y luego parece que el httplib se bloquea (vea el siguiente error).

Estoy ejecutando solo 1 proceso y 1 hilo de WSGI, pero parece que no importa.

No puedo entender por qué se está bloqueando y dando este error CannotSendRequest. He pasado muchas horas en este frustrante problema. Cualquier sugerencia / sugerencias de lo que podría ser sería muy apreciada.

File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 92, in get_response response = callback(request, *callback_args, **callback_kwargs) File "mypath/auth/decorators.py", line 9, in decorated return f(*args, **kwargs) File "mypath/auth/views.py", line 30, in login token = get_unauthorized_token() File "/root/storm/eye/auth/utils.py", line 49, in get_unauthorized_token return oauth.OAuthToken.from_string(oauth_response(req)) File "mypath/auth/utils.py", line 41, in oauth_response connection().request(req.http_method, req.to_url()) File "/usr/lib/python2.5/httplib.py", line 866, in request self._send_request(method, url, body, headers) File "/usr/lib/python2.5/httplib.py", line 883, in _send_request self.putrequest(method, url, **skips) File "/usr/lib/python2.5/httplib.py", line 770, in putrequest raise CannotSendRequest()

CannotSendRequest


Esta excepción se plantea cuando reutiliza el objeto httplib.HTTP para una nueva solicitud, mientras que no ha llamado a su método getresponse() para una solicitud previa. Probablemente hubo otro error antes de este que dejó la conexión en estado roto. La forma más sencilla y confiable de solucionar el problema es crear una nueva conexión para cada solicitud, sin reutilizarla. Claro, será un poco más lento, pero creo que no es un problema tener que ejecutar la aplicación en un solo proceso y un solo hilo.


También verifica tu versión de Python. Tuve una situación similar después de actualizar a Py-2.7 desde Py-2.6. En Py-2.6 todo funcionó sin problemas. Py-2.7 httplib usa HTTP / 1.1 de forma predeterminada lo que hizo que el servidor no devolviera la conexión: opción de cerrar en la respuesta, por lo tanto, el manejo de la conexión se interrumpió. En mi caso, esto funcionó con HTTP / 1.0.