我在新计算机上,遇到一个奇怪的问题:
使用没有requests
参数的timeout
会永远挂起。
使用timeout
参数会导致请求挂起,直到timeout
中的值通过为止;例如,如果timeout
设置为2,则请求挂起两秒钟;如果timeout
设置为10;该请求将挂起10秒钟。
使用Firefox或Postman等不会导致此行为。
我在使用请求2.19.1的Python 3.6.5。
烧瓶代码:
import flask
app = flask.Flask(__name__)
@app.route('/')
def home():
return 'hello'
app.run(host='localhost', port=8080, debug=True)
呼叫代码:
import requests
# This is instant
requests.get('http://localhost:8080/', timeout=0.1)
# This hangs for 2 seconds
requests.get('http://localhost:8080/', timeout=2)
# This hangs for 10 seconds
requests.get('http://localhost:8080/', timeout=10)
# This hangs forever without a `timeout` param
requests.get('http://localhost:8080')
使用Firefox或Postman会立即产生响应,因此我认为这与requests
有关。
在旧计算机上,我无法使用相同版本的Python和请求复制此行为。
顺便说一句,大约一个月前,当我第一次加载这台新计算机时,我没有遇到任何问题。
答案 0 :(得分:0)
大约三个小时的调试后,我重新启动计算机,问题消失了。我不知道根本原因。