Erreur httplib CannotSendRequest dans WSGI
J'ai utilisé deux différents python oauth bibliothèques avec Django pour s'authentifier avec son compte twitter. L'installation sur un serveur apache avec WSGI. Lorsque je redémarre le serveur, tout fonctionne très bien pendant environ 10 minutes, puis le httplib semble pour le verrouiller en place (voir l'erreur suivante).
Je suis à court de seulement 1 processus et 1 fil de WSGI, mais qui semble faire aucune différence.
Je ne peux pas comprendre pourquoi il est le verrouillage et de donner à cette CannotSendRequest erreur. J'ai passé beaucoup d'heures sur ce problème frustrant. Tous les conseils/suggestions de ce que peut être serait grandement apprécié.
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
source d'informationauteur Dave
Vous devez vous connecter pour publier un commentaire.
Cette exception est générée lorsque vous réutilisez
httplib.HTTP
objet pour une nouvelle demande, alors que vous havn pas appelé songetresponse()
méthode pour la requête précédente. Probablement il y avait une autre erreur avant que ce que la gauche de la connexion dans un mauvais état. Le plus simple moyen fiable pour résoudre le problème est la création d'une nouvelle connexion pour chaque demande, de ne pas le réutiliser. Bien sûr, il sera un peu plus lent, mais je pense que c'est pas une question d'avoir vous exécutez l'application dans le processus unique et seul thread.Également vérifier votre version de Python. J'ai eu une situation similaire après la mise à jour de Py-2.7 de Py-2.6. Dans Py-2.6, tout a fonctionné sans aucun problème. Py-2.7 httplib utilise le protocole HTTP/1.1 par défaut, ce qui fait que le serveur n'envoie pas de retour de la Connection: close option dans la réponse, donc la gestion des connexions a été brisé. Dans mon cas, cela a fonctionné avec HTTP/1.0.