在 Flask 中向我自己的本地主机发出 POST 请求后出现 WinError 10061
WinError 10061 after making a POST request to my own localhost in Flask
我有这段代码可以向我的本地主机发出 POST 请求:
from flask import Flask, request
import requests
app = Flask(__name__)
@app.route('/test', methods=['POST'])
def test():
input_json = request.get_json()
print('data received', input_json)
if __name__ == '__main__':
app.run()
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
在 运行 之后,看到它没有向控制台打印任何内容,我按 CTRL+C 并收到以下错误:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\connection.py", line 96, in create_connection
raise err
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\connection.py", line 86, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 706, in urlopen
chunked=chunked,
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1277, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1323, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1272, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1032, in _send_output
self.send(msg)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 972, in send
self.connect()
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 200, in connect
conn = self._new_conn()
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 182, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 756, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /test (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "only_post_request.py", line 15, in <module>
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\api.py", line 117, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /test (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión'))
我找不到解决问题的方法。如果我没记错的话,由于某些奇怪的原因我无法建立到我自己的服务器的连接。
我有 Windows 西班牙语,所以 [WinError 10061] 被翻译成:[WinError 10061] Cannot establish a connection as the target computer expressly denied that connection.
首先,运行服务器程序,
然后 运行 客户端程序在 python 的另一个 shell 中,它将工作。
虽然您在 app.run
下写 requests
,但 requests
不会 运行。如果你在 app.run
之前写,那么它会给出错误,因为服务器还没有准备好。因此,运行 客户端来自另一个文件,运行 服务器来自另一个文件。
或者您也可以这样做,在某些路径中编写 requests
脚本。喜欢:
@app.route("/"):
def index():
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
return res
但对你来说它不会工作因为你没有从 /test
返回任何东西你只是打印在 /test
.
中接收的数据
我有这段代码可以向我的本地主机发出 POST 请求:
from flask import Flask, request
import requests
app = Flask(__name__)
@app.route('/test', methods=['POST'])
def test():
input_json = request.get_json()
print('data received', input_json)
if __name__ == '__main__':
app.run()
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
在 运行 之后,看到它没有向控制台打印任何内容,我按 CTRL+C 并收到以下错误:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\connection.py", line 96, in create_connection
raise err
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\connection.py", line 86, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 706, in urlopen
chunked=chunked,
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1277, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1323, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1272, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 1032, in _send_output
self.send(msg)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\http\client.py", line 972, in send
self.connect()
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 200, in connect
conn = self._new_conn()
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connection.py", line 182, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\connectionpool.py", line 756, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /test (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "only_post_request.py", line 15, in <module>
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\api.py", line 117, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Carlitos\miniconda3\envs\python3.7\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /test (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000026DB39B3688>: Failed to establish a new connection: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión'))
我找不到解决问题的方法。如果我没记错的话,由于某些奇怪的原因我无法建立到我自己的服务器的连接。
我有 Windows 西班牙语,所以 [WinError 10061] 被翻译成:[WinError 10061] Cannot establish a connection as the target computer expressly denied that connection.
首先,运行服务器程序,
然后 运行 客户端程序在 python 的另一个 shell 中,它将工作。
虽然您在 app.run
下写 requests
,但 requests
不会 运行。如果你在 app.run
之前写,那么它会给出错误,因为服务器还没有准备好。因此,运行 客户端来自另一个文件,运行 服务器来自另一个文件。
或者您也可以这样做,在某些路径中编写 requests
脚本。喜欢:
@app.route("/"):
def index():
res = requests.post('http://localhost:5000/test', json={'name': 'Linus Torvalds'})
return res
但对你来说它不会工作因为你没有从 /test
返回任何东西你只是打印在 /test
.