Flask Ответ приложения не получен на стороне клиента - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть приложение flask, которое выполняет некоторые вычисления, и я делаю запросы к ноутбуку Jupyter. Код на стороне клиента соответствует основному c формату:

outputs = []
for batch in request_batches:
    response = requests.post(flask_address, json=json.dumps(batch), timeout=3600)
    outputs.append(response)

Идея состоит в том, чтобы выполнить итерацию серии пакетов запросов (пакетирование имеет смысл для приложения) и собрать ответы.

Обычно, что происходит для каждой партии, я вижу запрос, зарегистрированный на стороне приложения Flask, вместе с подтверждением Post после завершения вычисления.

00.000.000.000 - - [29/Apr/2020 02:21:46] "POST //docking HTTP/1.1" 200 -

После завершения одной партии l oop продолжается и следующий запрос отправляется.

Проблема, с которой я сталкиваюсь, иногда заключается в том, что вычисление размера Flask занимает немного больше времени, чем обычно, и это вызывает запрос l oop в зависание ноутбука (обратите внимание, что это больше, чем обычно, на несколько минут, что намного меньше установленного периода ожидания). При размере Flask вычисление успешно завершается, и появляется сообщение Post.

При размере ноутбука l oop зависает и дальнейшие запросы не выполняются. Это не проблема тайм-аута - нет ошибок тайм-аута. Ячейка ноутбука просто зависает, пока я не прерываю ее вручную.

Когда я прерываю, я вижу следующую трассировку стека:

~/opt/anaconda3/envs/env/lib/python3.7/socket.py in readinto(self, b)
    587         while True:
    588             try:
--> 589                 return self._sock.recv_into(b)
    590             except timeout:
    591                 self._timeout_occurred = True

После прерывания я могу подтвердить, что ответ, вызывающий l oop чтобы зависание не было добавлено к выводам. Так что каким-то образом приложение Flask отправляет ответ, но ответ не поступает в блокнот клиента. Опять же, 95% времени это работает нормально, но 5%, когда запрос обрабатывается дольше, приводит к зависанию запроса oop.

Кто-нибудь знает, как go отладить это?

...