Nano Hash - криптовалюты, майнинг, программирование

Обработка нескольких запросов в Flask

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

Есть ли способ заставить мое приложение Flask принимать запросы от нескольких пользователей?

03.02.2013


Ответы:


1

Да, разверните приложение на другом сервере WSGI, см. документацию по вариантам развертывания Flask.

Серверный компонент, поставляемый с Flask, на самом деле предназначен только для разработки вашего приложения; хотя его можно настроить для обработки одновременных запросов с помощью app.run(threaded=True) (начиная с Flask 1.0 это значение по умолчанию). В приведенном выше документе перечислены несколько вариантов серверов, которые могут обрабатывать одновременные запросы и гораздо более надежны и настраиваемы.

03.02.2013
  • воспользуюсь случаем, чтобы спросить здесь в комментариях - какой способ вы бы предложили из тех 5, которые перечислены в документации? 03.02.2013
  • @IgnasB.: Извините, это сильно зависит от ваших вариантов использования, опыта и сценариев развертывания. Я также не могу сказать, что использовал все 5, поэтому я не собираюсь давать рекомендации. 03.02.2013
  • Спасибо, это работает! У меня осталась только одна (весьма важная) проблема: если пользователь обращается к странице, но уходит до того, как расчет будет выполнен, расчет будет продолжаться до тех пор, пока он не будет выполнен. Как я могу остановить расчет, если пользователь уходит? 04.02.2013
  • @Neyuh: Не уверен, что ты можешь что-то с этим поделать. Возможно, фляга вызывает исключение, если сокет закрывается раньше, не уверен. 04.02.2013
  • Большое спасибо за подсказку threaded=True. :) Я потратил часы на поиски объяснения, почему одновременная загрузка файлов заставила мое приложение для фляги задохнуться. 03.03.2016
  • Просто из любопытства @MartijnPieters, я везде читал, что не используйте внутренний сервер разработки, потому что он плохой (небезопасный + медленный), видели ли вы тест, показывающий, что он действительно намного медленнее, чем wsgi + apache, и если да, то каким образом фактор? Также вы видели проблему безопасности в нем? Наличие такого источника было бы полезно для понимания реальной потребности в настройке более сложной архитектуры (flask + gunicorn + wsgi + apache вместо просто flask) и т. д. Заранее спасибо, если у вас есть эта информация. 11.04.2018
  • @Basj: Нет, но это потому, что я не искал эталон. Не стоит даже начинать сравнивать встроенный сервер разработки с другими серверами WSGI, это все равно, что спрашивать, подходит ли семейный автомобиль для гонки Формулы-1. Заявленная цель встроенного сервера — облегчить вам настройку и запуск, а также начать разработку с минимальными усилиями. С этой целью сервер построен поверх веб-сервера на чистом Python со стандартной библиотекой. Производительность и безопасность не являются целями, в то время как Apache и mod_wsgi (или uWSGI, или Gunicorn) уделяют особое внимание производительности и безопасности. 12.04.2018

  • 2

    Для запросов, которые занимают много времени, вы можете рассмотреть возможность запуска для них фонового задания.

    03.02.2013
  • Что такое долгое время? Скажете, 10 секунд — это долго? Или все, что больше минуты, это долгое время? Я думаю, это зависит от приложения, но есть ли какие-то эмпирические правила? 30.05.2015
  • Вы не хотите, чтобы ваш запрос истек, или ваши пользователи думали, что он просто заблокирован, я думаю, что 10 секунд уже рискованно, все, что больше, слишком долго. 31.05.2015
  • stackoverflow.com/questions/50275646/ 08.07.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..