Twitter APIからデータを取得するスクリプトを作成しています。 OAuth 1.1の使用は、requests
の上にrequests_oauthlib
ヘルパーライブラリを使用してセッションを認証していることを意味します。requests_oauthlibを複数回呼び出すとエラーが発生する(urllib3内で実際に発生したエラー)
APIの作品への最初の呼び出しが、次のようにその後の呼び出しはTypeError
を与える:セッション中持続何かがありますように、それは誤りが来る繰り返しの使用に常にだとして
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connection.pyc in __init__(self, *args, **kw)
124
125 # Superclass also sets self.source_address in Python 2.7+.
--> 126 _HTTPConnection.__init__(self, *args, **kw)
127
128 def _new_conn(self):
TypeError: unbound method __init__() must be called with HTTPConnection instance as first argument (got VerifiedHTTPSConnection instance instead)
が見えます。私はピップと差異なしでインストールされた最新のバージョンでクリーンなvirtualenvを試してみました。私は、コンテキストマネージャのアプローチを使用してい
ので、セッションが起きてからこれを防ぐ、各呼び出しの後に破壊されるだろうと思った:
with ro.OAuth1Session(**self._auth) as s:
response = s.get(url)
任意の修正やポインタは、問題が認識されるであろう引き起こしているかを理解すること。
編集:私はrequests
ドキュメント(http://docs.python-requests.org/en/master/user/authentication/)で説明したが、同じエラーが発生すると、セッションを構築する別の方法を使用して、別のアプローチを試みました。
編集:それは便利だ場合にフルスタック:(自己
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/sessions.pyc GETで、 URL、** kwargsから) 486 kwargs.setdefault( 'allow_redirects'、TRUE) - > 487リターンself.request( 'GET'、URL、** kwargsから) 489 DEFオプション(自己、URL 、** kwargs):
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
473 }
474 send_kwargs.update(settings)
--> 475 resp = self.send(prep, **send_kwargs)
476
477 return resp
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/sessions.pyc in send(self, request, **kwargs)
583
584 # Send the request
--> 585 r = adapter.send(request, **kwargs)
586
587 # Total elapsed time of the request (approximately)
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
401 decode_content=False,
402 retries=self.max_retries,
--> 403 timeout=timeout
404 )
405
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.pyc in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, **response_kw)
564 # Request a connection from the queue.
565 timeout_obj = self._get_timeout(timeout)
--> 566 conn = self._get_conn(timeout=pool_timeout)
567
568 conn.timeout = timeout_obj.connect_timeout
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.pyc in _get_conn(self, timeout)
254 conn = None
255
--> 256 return conn or self._new_conn()
257
258 def _put_conn(self, conn):
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.pyc in _new_conn(self)
800 conn = self.ConnectionCls(host=actual_host, port=actual_port,
801 timeout=self.timeout.connect_timeout,
--> 802 strict=self.strict, **self.conn_kw)
803
804 return self._prepare_conn(conn)
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connection.pyc in __init__(self, host, port, key_file, cert_file, strict, timeout, **kw)
208
209 HTTPConnection.__init__(self, host, port, strict=strict,
--> 210 timeout=timeout, **kw)
211
212 self.key_file = key_file
/Users/phil/code/Virtualenv/req_test/lib/python2.7/site-packages/requests/packages/urllib3/connection.pyc in __init__(self, *args, **kw)
124
125 # Superclass also sets self.source_address in Python 2.7+.
--> 126 _HTTPConnection.__init__(self, *args, **kw)
127
128 def _new_conn(self):
TypeError: unbound method __init__() must be called with HTTPConnection instance as first argument (got VerifiedHTTPSConnection instance instead)
ありがとう、それはそれを修正しません。私はあなたの提案や同じ結果に応じて、明示的なバージョンを試してみました。インタラクティブモードでの最初の使用で動作するので、呼び出しではありません。問題は2回目の呼び出しであるため、メソッドが呼び出される方法に問題はありません。 –