Python 客户端错误“由对等方重置连接”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/38853972/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Python client error 'Connection reset by peer'
提问by Rakesh
I have written a very small python client to access confluence restful api. I am using https protocol to connect with the confluence. I am running into Connection reset by peer
error.
Here is the full stack trace.
我写了一个非常小的python客户端来访问confluence restful api。我正在使用 https 协议连接汇流。我遇到了Connection reset by peer
错误。这是完整的堆栈跟踪。
/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
SNIMissingWarning
/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Traceback (most recent call last):
File "wpToConfluence.py", line 15, in <module>
main()
File "wpToConfluence.py", line 11, in main
headers={'content-type': 'application/json'})
File "/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File "/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/Users/rakesh.kumar/.virtualenvs/wpToConfluence.py/lib/python2.7/site-packages/requests/adapters.py", line 453, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(54, 'Connection reset by peer'))
Here is my client code:
这是我的客户端代码:
import requests
def main():
auth = open('/tmp/confluence', 'r').readline().strip()
username = 'rakesh.kumar'
response = requests.get("https://<HOST-NAME>/rest/api/content/",
auth=(username, auth),
headers={'content-type': 'application/json'})
print response
if __name__ == "__main__":
main()
I am running this script in a virtual environment and following packages are installed on that environment:
我在虚拟环境中运行此脚本,并在该环境中安装了以下软件包:
(wpToConfluence.py)? Python pip list
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
appnope (0.1.0)
backports.shutil-get-terminal-size (1.0.0)
decorator (4.0.10)
ipdb (0.10.1)
ipython (5.0.0)
ipython-genutils (0.1.0)
pathlib2 (2.1.0)
pexpect (4.2.0)
pickleshare (0.7.3)
pip (6.1.1)
prompt-toolkit (1.0.5)
ptyprocess (0.5.1)
Pygments (2.1.3)
requests (2.10.0)
setuptools (25.1.6)
simplegeneric (0.8.1)
six (1.10.0)
traitlets (4.2.2)
urllib3 (1.16)
wcwidth (0.1.7)
It does complain about the python version number but I am not sure how to update my Mac/Virtual environment python.
它确实抱怨 python 版本号,但我不确定如何更新我的 Mac/虚拟环境 python。
I have tried to curl command and Postman both of them work fine for the given parameters.
我曾尝试 curl 命令和 Postman 对于给定的参数,它们都可以正常工作。
回答by Rakesh
While installing requests
library it skips few of optional security packages('pyOpenSSL', 'ndg-httpsclient', and 'pyasn1') which are required for the SSL/Https connection.
You can fix it by either running this command
在安装requests
库时,它会跳过SSL/Https 连接所需的一些可选安全包(“pyOpenSSL”、“ndg-httpsclient”和“pyasn1”)。您可以通过运行此命令来修复它
pip install "requests[security]"
or
或者
pip install pyopenssl ndg-httpsclient pyasn1
回答by bhuvanrk
I tried installing all the optional security packages provided in the answer above. But nothing seemed to work.
我尝试安装上述答案中提供的所有可选安全包。但似乎没有任何效果。
One important GOTCHA : Check if your url end-point actively prevents programmatic access.
一个重要的 GOTCHA :检查您的 url 端点是否主动阻止编程访问。
Take a look at the robots.txt file in the root directory of a website: http://myweburl.com/robots.txt.
查看网站根目录下的 robots.txt 文件:http: //myweburl.com/robots.txt。
If it contains text that looks like this : User-agent: * Disallow: /
如果它包含如下所示的文本: User-agent: * Disallow: /
This site doesn't like and want scraping. This gives you the same dreaded error 54, connection reset by the peer.
这个网站不喜欢,想要刮。这会给你同样可怕的错误 54,连接被对方重置。
Here is a snapshot :
这是一个快照:
https://www.aclibrary.org/robots.txt
https://www.aclibrary.org/robots.txt
User-agent: discobot Disallow: / User-agent: AddThis.com Disallow: / User-agent: Yandex Disallow: / User-agent: Baiduspider Disallow: / User-agent: Baiduspider-video Disallow: / User-agent: Baiduspider-image Disallow: / User-agent: SemrushBot Disallow: / User-agent: SemrushBot-SA Disallow: / User-Agent: W3C-checklink Crawl-delay: 0 User-agent: Twitterbot Disallow: User-agent: * Crawl-delay: 10 Disallow: /er.php Disallow: /err.php Disallow: /go.php Disallow: /friendly.php Disallow: /ld.php Disallow: /srch.php Sitemap: https://aclibrary.org/sitemap.xml
用户代理:discobot 禁止:/用户代理:AddThis.com 禁止:/用户代理:Yandex 禁止:/用户代理:百度蜘蛛禁止:/用户代理:百度蜘蛛视频禁止:/用户代理:百度蜘蛛-图像禁止:/用户代理:SemrushBot 禁止:/用户代理:SemrushBot-SA 禁止:/用户代理:W3C-checklink 抓取延迟:0 用户代理:Twitterbot 禁止:用户代理:*抓取延迟: 10 禁止:/er.php 禁止:/err.php 禁止:/go.php 禁止:/friendly.php 禁止:/ld.php 禁止:/srch.php 站点地图:https://alibrary.org/sitemap.xml