time.sleep, Flask и I / O ждут - PullRequest
       22

time.sleep, Flask и I / O ждут

0 голосов
/ 26 ноября 2018

При использовании time.sleep() будет ли заблокирован запрос Flask?

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

В этом случае мое приложение Flask запускает процесс, а затем ожидает его завершения, прежде чем вернуть результат.Моя проблема здесь заключается в том, что при вызове чего-то вроде (упрощенного):

while True:
    if process_is_done():
        break

    time.sleep(1)

Будет ли Flask блокировать этот запрос до тех пор, пока он не будет выполнен, или он будет позволять поступать другим запросам в это время?

1 Ответ

0 голосов
/ 26 ноября 2018

Да, этот запрос полностью заблокирован.time.sleep() ничего не сообщает о сне, он просто «простаивает» процессор на время.

Сама колба не асинхронна, у нее нет концепции удержания обработчика запросов и предоставления других запросов больше.время.Хороший сервер WSGI будет использовать потоки и / или несколько рабочих процессов для достижения параллелизма, но этот один запрос блокируется и все равно занимает процессорное время.

...