【发布时间】:2019-03-23 22:29:42
【问题描述】:
我正在尝试在 docker 容器之间发出 GET/POST 请求。
在其中一个(其他工作正常)中,执行以下操作时:
ADDR = 'http://172.20.0.2:5002/see'
r = requests.post(ADDR, data=data, headers=headers)
该命令在尝试连接时永远挂起(或直到超时,如果已定义)。它甚至从不建立连接:
^CTraceback (most recent call last):
File "/workspace/master_server.py", line 35, in <module>
r = requests.post(ADDR, data=data, headers=headers)
File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 440, in send
timeout=timeout
File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
chunked=chunked)
File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 357, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3.5/http/client.py", line 1106, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request
self.endheaders(body)
File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders
self._send_output(message_body)
File "/usr/lib/python3.5/http/client.py", line 934, in _send_output
self.send(msg)
File "/usr/lib/python3.5/http/client.py", line 877, in send
self.connect()
File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line 166, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.5/dist-packages/urllib3/connection.py", line 141, in _new_conn
(self.host, self.port), self.timeout, **extra_kw)
File "/usr/local/lib/python3.5/dist-packages/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
如果我使用 bash 中的 curl 运行完全相同的请求,它会毫不费力地工作:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '"[1215 2589 1392 3019]"' 'http://172.20.0.2:5002/see'
我尝试以完全相同的方式使用的任何其他容器都可以与请求模块或 curl 一起使用。有关如何修复它或至少有效地调试问题的任何帮助?
【问题讨论】:
-
我现在也有同样的问题。它可以在 Windows 上运行,但现在 ubuntu 挂起(使用 python3、robobrowser)
-
同样的问题,在windows本地工作,在ubuntu ec2服务器上挂起
-
你想在容器内卷曲吗?
标签: python http docker curl python-requests