Долгосрочный запрос в Flask с React - PullRequest
0 голосов
/ 21 января 2020

Я создаю приложение в Flask API и React.

Первая страница приложения предоставляет пользователю форму для загрузки файла. Пользователь выбирает файл (700 МБ) и нажимает кнопку загрузки.

Как только это будет сделано, серверная часть:

  • Принимает файл, разархивирует его
  • Запустите несколько Модель ML
  • Возвращает JSON, содержащий правильные данные

Когда все это закончится, реакция получает JSON и отображает новую страницу.

Эти три шага занимают более 10 минут , поэтому я получаю ошибку 500, которая, по моему мнению, связана с длительным тайм-аутом запроса.

Я хотел бы знать, есть ли способ сделать timeout=None.

Я искал некоторые ответы, и они предлагают использовать Celery. Однако я не уверен, что это правильный подход к моей задаче.

1 Ответ

0 голосов
/ 22 января 2020

Я второй с @TheIncorrigible предложением решить с какой-то событийно-управляемой архитектурой , что вы делаете, это Web Worker Architecture. Ссылка

Ваша проблема напоминает мне одну из услуг AWS под названием control tower, где запуск зоны приземления этой службы занимает более> 10 минут, а AWS изящно справляется с этим. Когда вы пытаетесь запустить его, он выдает мне баннер, говорящий, что это прогресс, и это займет 1 час. В консольном журнале я заметил, что они используют Promise (точно не знаю, как они достигают и как долго он может обработать).

Может быть, вы можете попробовать использовать Promises в реакции для асинхронных вычислений. Я не эксперт, но похоже, что вы можете достичь этого, используя это. Вы можете посмотреть это короткое видео для понимания основ c.

Существует также signalr, который позволяет коду сервера отправлять асинхронные уведомления клиентским веб-приложениям. Вы можете проверить, может ли это быть применено в вашем случае сигнализатор в python dicussion

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...