Spec-Zone.ru › Flask 1.1

Становитесь крупнее

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

Прочитайте исходный код.

Flask частично был создан, чтобы продемонстрировать, как построить свой собственный фреймворк на базе уже широко используемых инструментов Werkzeug (WSGI) и Jinja (шаблонизация), и по мере развития он стал полезным для широкой аудитории. По мере роста вашей кодовой базы не просто используйте Flask – поймите его. Прочитайте исходный код. Код Flask написан для чтения; его документация опубликована, чтобы вы могли использовать его внутренние API. Flask придерживается задокументированных API в библиотеках верхнего уровня и документирует свои внутренние утилиты, чтобы вы могли найти точки входа, необходимые для вашего проекта.

Подключение. Расширение.

Документация API полна доступных переопределений, точек входа и Сигналов. Вы можете предоставить пользовательские классы для таких вещей, как объекты запроса и ответа. Более глубоко изучите используемые вами API и найдите доступные из коробки настройки в релизе Flask. Поищите способы рефакторинга вашего проекта в коллекцию утилит и расширений Flask. Изучите множество Расширений в сообществе и ищите шаблоны, чтобы создать свои собственные расширения, если не найдете нужные инструменты.

Наследование.

Класс Flask имеет множество методов, предназначенных для наследования. Вы можете быстро добавить или настроить поведение, наследуя Flask (см. связанную документацию по методам) и использовать это подклассы там, где вы инициализируете класс приложения. Это хорошо работает с Фабриками приложений. См. Наследование Flask для примера.

Оборачивание с помощью промежуточного ПО.

Глава Распределения приложений подробно показывает, как применять промежуточное ПО. Вы можете ввести WSGI-промежуточное ПО для оборачивания ваших экземпляров Flask и внести исправления и изменения на слое между вашим приложением Flask и вашим HTTP-сервером. Werkzeug включает несколько промежуточных ПО.

Разветвление.

Если ни один из вышеперечисленных вариантов не подходит, разветвите Flask. Большая часть кода Flask находится в Werkzeug и Jinja2. Эти библиотеки выполняют большую часть работы. Flask – это просто клей, который их связывает. Для каждого проекта наступает момент, когда базовый фреймворк мешает (из-за предположений первоначальных разработчиков). Это естественно, потому что если бы этого не было, фреймворк изначально был бы очень сложной системой, что приводит к крутому порогу входа и большому количеству разочарований у пользователей.

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

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

Масштабирование как профессионал.

Для многих веб-приложений сложность кода – проблема меньшая, чем масштабирование для ожидаемого количества пользователей или записей данных. Flask сам по себе ограничен в масштабировании только кодом вашего приложения, хранилищем данных, которое вы хотите использовать, и реализацией Python и веб-сервером, на котором вы работаете.

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

Существует только один ограничивающий фактор, касающийся масштабирования в Flask, который представляют собой контекстно-локальные прокси. Они зависят от контекста, который в Flask определяется как поток, процесс или greenlet. Если ваш сервер использует какой-либо тип конкурентности, который не основан на потоках или greenlet, Flask больше не сможет поддерживать эти глобальные прокси. Однако большинство серверов используют либо потоки, greenlet, либо отдельные процессы для достижения конкурентности, что являются методами, хорошо поддерживаемыми базовой библиотекой Werkzeug.

Обсудите с сообществом.

Разработчики Flask стремятся сохранить фреймворк доступным для пользователей с большими и маленькими кодовыми базами. Если вы столкнетесь с препятствием, вызванным Flask, не стесняйтесь связаться с разработчиками на почтовом списке или сервере Discord. Лучший способ для разработчиков Flask и расширений Flask улучшить инструменты для крупных приложений – получить отзывы от пользователей.

© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/1.0.x/becomingbig/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API