0

プロキシ経由でコードを実行しようとするたびに、このエラーが発生し続けます。コードをプロキシの背後で実行する方法について利用可能なすべてのリンクを調べましたが、これを実行することはできません。

import twython
import requests
TWITTER_APP_KEY = 'key' #supply the appropriate value
TWITTER_APP_KEY_SECRET = 'key-secret' 
TWITTER_ACCESS_TOKEN = 'token'
TWITTER_ACCESS_TOKEN_SECRET = 'secret'


t = twython.Twython(app_key=TWITTER_APP_KEY, 
app_secret=TWITTER_APP_KEY_SECRET, 
oauth_token=TWITTER_ACCESS_TOKEN, 
oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET,
client_args = {'proxies': {'http': 'proxy.company.com:10080'}})

今私がするなら

t = twython.Twython(app_key=TWITTER_APP_KEY, 
        app_secret=TWITTER_APP_KEY_SECRET, 
        oauth_token=TWITTER_ACCESS_TOKEN, 
        oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET,
        client_args = client_args)

print t.client_args

{} しか得られない

そして走ってみると

t.update_status(status='See how easy this was?')

私はこの問題を抱えています:

Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
t.update_status(status='See how easy this was?')
File "build\bdist.win32\egg\twython\endpoints.py", line 86, in update_status
return self.post('statuses/update', params=params)
File "build\bdist.win32\egg\twython\api.py", line 223, in post
return self.request(endpoint, 'POST', params=params, version=version)
File "build\bdist.win32\egg\twython\api.py", line 213, in request
content = self._request(url, method=method, params=params, api_call=url)
File "build\bdist.win32\egg\twython\api.py", line 134, in _request
response = func(url, **requests_args)
File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\sessions.py",    line 377, in post
return self.request('POST', url, data=data, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\sessions.py", line 335, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\sessions.py", line 438, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\adapters.py", line 327, in send
raise ConnectionError(e)
ConnectionError: HTTPSConnectionPool(host='api.twitter.com', port=443): Max retries  exceeded with url: /1.1/statuses/update.json (Caused by <class 'socket.gaierror'>: [Errno 11004] getaddrinfo failed)

あちこち探しました。できることはすべて試しました。利用可能な唯一のリソースは次のとおりです。

https://twython.readthedocs.org/en/latest/usage/advanced_usage.html#manipulate-the-request-headers-proxies-etc

https://groups.google.com/forum/#!topic/twython-talk/GLjjVRHqHng

https://github.com/fumieval/twython/commit/7caa68814631203cb63231918e42e54eee4d2273

https://groups.google.com/forum/#!topic/twython-talk/mXVL7XU4jWw

ここ (Stack Overflow) で見つけたトピックもありませんでした。

助けてください。誰かが答えてくれることを願っています。すでにこれを行っている場合は、コード例を教えてください。

4

3 に答える 3

3

コードがプロキシを使用していません。この例では、plain のプロキシを指定しましたHTTPが、stackstrace にはHTTPSConnectionPool. ローカル マシンが外部ドメインを解決できない可能性があります。

次のようにプロキシを設定してみてください。

client_args = {'proxies': {'https': 'http://proxy.company.com:10080'}}
于 2013-07-03T18:15:51.287 に答える
1

@ t-8ch の回答 (彼が定義したようにプロキシを使用する必要があるということ) と組み合わせて、現時点では、要求 (Twython の基盤となるライブラリ) は HTTPS 経由のプロキシをサポートしていないことにも注意してください。これは、ライブラリ urllib3 の基礎となるリクエストの問題です。私が知る限り、それは長期にわたる問題です。

それに加えて、Twython のソースt.client_argsを少し読むと、空の辞書が返される理由が説明されています。つまり、代わりに printt.client.proxiesを実行すると、実際にプロキシが適切に処理されていることがわかります。

最後に、StackOverflow で自分の職場について不満を述べたり、コメントで自分の GitHub ユーザー名 (および本名) が関連付けられている GitHub コミットにリンクしたりすることは、最善の考えではありません。StackOverflow は Google によって完全にインデックス化されており、他の誰かがこれを見つけて、私と同じように簡単にあなたと関連付ける可能性はほとんどありません。その上、そのコミットは Twython の現在の動作にまったく影響を与えません。そのコミットの作成者を追跡することで、終わりのないうさぎの穴を駆け下りています。

于 2013-07-04T16:36:12.800 に答える