Что означает локальный поток в среде Flask? - PullRequest
9 голосов
/ 16 февраля 2012

Я оцениваю фреймворки Python для создания REST API.Я просмотрел множество фреймворков, включая flask, и обнаружил, что Flask довольно интересен и прост в использовании со всеми функциями, необходимыми для создания веб-службы REST.

Одна вещь, которую я получаю, это то, что в документах на флеш упоминается, что она использует"поток локальный и есть проблемы с масштабируемостью".

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

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

1 Ответ

4 голосов
/ 16 февраля 2012

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

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

...