【问题标题】:"[Errno 111] Connection refused" on PythonanywherePythonanywhere 上的“[Errno 111] 连接被拒绝”
【发布时间】:2016-08-06 07:18:21
【问题描述】:

我正在尝试在 pythonanywhere 上部署我的应用程序,但我无法连接到 twitter。

这是我得到的错误:-

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/btpraasta/btp_raasta/runServer.py", line 178, in remainingRequests
return (str)(getTrend.get_remainingRequests())
File "/home/btpraasta/btp_raasta/python/getTrend.py", line 20, in get_remainingRequests
data = get_json(url)
File "/home/btpraasta/btp_raasta/python/getTrend.py", line 10, in get_json
connection = urllib.urlopen(url, proxies=proxies)
File "/usr/lib/python2.7/urllib.py", line 87, in urlopen
return opener.open(url)
File "/usr/lib/python2.7/urllib.py", line 208, in open
return getattr(self, name)(url)
File "/usr/lib/python2.7/urllib.py", line 437, in open_https
h.endheaders(data)
File "/usr/lib/python2.7/httplib.py", line 975, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 835, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 797, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1178, in connect
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
IOError: [Errno socket error] [Errno 111] Connection refused

我要运行的代码是这样的:-

proxies = {'http': 'http://proxy.server:3128'}
connection = urllib.urlopen(url, proxies=proxies)
data = connection.read()

我正在尝试访问以下 URL:- 'https://api.twitter.com/1.1/application/rate_limit_status.json'

我在 pythonanywhere 上有一个免费帐户,并验证了 AP​​I 已列入白名单,并且我正在使用他们在此处 (http://help.pythonanywhere.com/pages/403ForbiddenError) 描述的代理。

【问题讨论】:

  • 如果您收到“111 连接被拒绝”错误,那么它出于某种原因忽略了您的代理设置,或者它们不是正确的设置(尽管它们在我看来完全没问题)。您是否考虑过使用requests 而不是直接使用urllib?配置代理设置很繁琐,urllib 很难编写代码。 requests 更容易使用,它从环境变量中获取代理配置,所以你不需要自己设置。
  • 啊,代理设置中可能存在一个问题——也许您实际上使用的是 https,或者您访问的端点正在将您重定向到 https?您可以尝试将{"https": "http://proxy.server:3128"} 添加到您的字典中来处理。
  • 我确实尝试过使用{"https": "http://proxy.server:3128"},但没有成功。使用requests 而不是urllib 做到了。你可以把它作为答案!谢谢!

标签: python python-2.7 twitter proxy pythonanywhere


【解决方案1】:

将我的评论复制到正确答案:让代理与urllib 一起工作可能很棘手。 requests 通常更容易使用,它从环境变量中提取代理设置。绝对推荐!

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2020-11-22
    • 2014-09-14
    • 2021-06-08
    • 2021-08-23
    • 2016-11-12
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多