Spec-Zone.ru › Flask 0.12

Становление масштабным

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

Изучите исходный код.

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, не стесняйтесь обращаться к разработчикам на списках рассылки или в канале IRC. Лучший способ для разработчиков Flask и расширений Flask улучшить инструменты для крупных приложений — получать отзывы от пользователей.

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

Spec-Zone.ru

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