Python CannotSendRequest - PullRequest
       7

Python CannotSendRequest

0 голосов
/ 18 марта 2011

Я получаю CannotSendRequest в моей библиотеке oauth (Django socialauth), когда пытаюсь подключиться к Twitter.

Traceback:
File "/Library/Python/2.6/site-packages/django/core/handlers/base.py" in get_response
100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/Users/me/webfaction/project/socialauth/views.py" in twitter_login
94.     request_token = twitter.fetch_request_token(callback=request.build_absolute_uri(reverse('socialauth_twitter_login_done')))
File "/Users/me/webfaction/project/socialauth/lib/oauthtwitter2.py" in fetch_request_token
50.         return oauth.OAuthToken.from_string(oauth_response(oauth_request))
File "/Users/me/webfaction/project/socialauth/lib/oauthtwitter2.py" in oauth_response
33.     connection().request(req.http_method, req.to_url())
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/httplib.py" in   request
914.             self._send_request(method, url, body, headers)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/httplib.py" in _send_request
931.         self.putrequest(method, url, **skips)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/httplib.py" in putrequest
818.             raise CannotSendRequest()

Exception Type: CannotSendRequest at /accounts/twitter_login/
Exception Value: 

Здесь я создаю соединение HTTP

def connection():
    try: 
        return connection._connection
    except AttributeError:
        connection._connection = httplib.HTTPSConnection(TWITTER_URL)
    return connection._connection

def oauth_response(req):
    connection().request(req.http_method, req.to_url())
    return connection().getresponse().read()

Я искал SO и нашел эти ссылки, но я все еще не уверен, как реализовать решение.Я пытался и потерпел неудачу.Мы будем благодарны за любую помощь.

Ошибка httplib CannotSendRequest в WSGI

Когда я использую httplib для своего OAUTH в Python, я всегда получаю «CannotSendRequest», а затем«

1 Ответ

4 голосов
/ 18 марта 2011

В сообщении, на которое вы ссылались , говорится, что эта ошибка возникает, когда вы повторно используете соединения, которые вызвали исключение и не достигли этапа getresponse ().

Действительно, connection.request("GET", "/") х 2 выдает ошибку.

Предлагаемое решение состоит в том, чтобы заново создавать соединение каждый раз.Это то, что вы хотите сделать?Обратите внимание, у меня нет мнений по этому вопросу, вы только что спросили, как реализовать то, что в этих сообщениях.

Если это так, избавьтесь от функции connection() и всегда выполняйте

connection = httplib.HTTPSConnection(TWITTER_URL)
connection.request(req.http_method, req.to_url())
response = connection.getresponse().read()
connection.close()
return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...