Spec-Zone.ru › Flask 2.0

Становление крупным проектом

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

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

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 определяется как поток, процесс или зелёная нить. Если ваш сервер использует какую-либо форму параллелизма, которая не основана на потоках или зелёных нитях, Flask больше не сможет поддерживать эти глобальные прокси. Однако большинство серверов используют либо потоки, зелёные нити, либо отдельные процессы для достижения параллелизма, которые являются хорошо поддерживаемыми методами подлежащей библиотекой Werkzeug.

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

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

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

Spec-Zone.ru

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