Flask или Requests висит, если не указано время ожидания, и висит до указанного времени ожидания - PullRequest
0 голосов
/ 11 июля 2019

Я на новом компьютере и сталкиваюсь со странной проблемой:

Использование requests без параметра timeout просто зависает навсегда.

Использование параметра timeout приводит к зависанию запроса до тех пор, пока не пройдет значение в timeout;например, если timeout установлено в 2, запрос зависает на две секунды;если timeout установлено на 10;запрос зависает на 10 секунд.

Использование Firefox, Postman и т. д. не приводит к такому поведению.

Я на Python 3.6.5 с использованием запросов 2.19.1.

Код колбы:

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 и запросами.

Кстати, когда я впервые загрузил этот новый компьютер около месяца назад, у меня не былопроблема.

1 Ответ

0 голосов
/ 11 июля 2019

После примерно трех часов отладки я перезагрузил компьютер, и проблема исчезла.Я не знаю причину.

...