Веб-рамки более высокого порядка/надстройки для Twisted/Cyclone/Tornado (веб-логин/пользователь/админ)?

Я борюсь с некоторыми архитектурными решениями для масштабируемого приложения интернет-приложений.

Я решил использовать мой проект Twisted, дополненный рамкой Cyclone для обеспечения многих Tornado приложений (веб-грейферы, auth-decorators, secure-cookies и т.д.)

Использование Twisted core отлично работает для меня. У меня есть многочисленные протоколы IP и аппаратные интерфейсы, которые, как оказалось, имеют большую библиотечную поддержку внутри скрученных (и добавление новых протоколов и интерфейсов в мое приложение - наиболее вероятные углы, у меня будет ползучесть области проекта), все с помощью Twisted очень низкий процессор и обеспечивает очень высокое количество подключений.

Мои проблемы связаны с функциональностью webapp второго порядка.

Я вытащил Cyclone, думая, что с его помощью (OpenID, oauth, user-auth decorators и secure-cookies) не потребуется многого для реализации функций user/session/admin в моем webapp. После 500 + линий абстрагирования моей базы данных (через txmongo) и просто создание пользовательских логинов стало ясно, что я оба:

  • Не понял, как мало Cyclone/Tornado вносит в пространство пользователя/сеанса/администратора, а
  • Не понял объем кода, который требуется для заполнения пробелов, если вы пытаетесь создать многопользовательский auth webapp

Друг указал мне на Flask, который, как я думал, был полностью избыточным, пока не нашел флеш-плагинов. Комбинация Flask-Login и Flask-Admin будет полностью охватывать потребности пользователя, сессии и пользователя-администратора, отрицая, что я пишу то, что, я думаю, будет около 2k строк кода. К сожалению, флеш-плагины изобилуют кодом блокировки и вызовами блокировки библиотек. Я не считаю их совместимыми с моим проектом, даже если WSGI контейнеры используются, учитывая, что функциональность пользователя/сеанса происходит с каждой загрузкой страницы (кроме того, я не вижу никаких коротких сокращений, которые позволили бы мне перенести их в мир асинхронизации без работы, грубо равной скорости перезаписи)

Мой вопрос:

В пространстве async для python (... надеюсь, что в пространстве Twisted, учитывая мои требования к протоколу), есть ли какие-либо плагины или альтернативные фреймворки, которые предоставляют готовые к использованию функции пользователя/логина/администратора, аналогичные тем, что находится в Flask -Login и Flask-Admin?

P.S. Я рассмотрел Klein как очевидную версию Twisted версии Flask, но у нее, похоже, нет экосистемы плагинов, и я не нахожу сильных user/session/admin.

P.P.S. К тому моменту, когда я написал этот вопрос, я уже написал свою собственную (дерьмовую) систему пользовательского входа в систему. Так что я на самом деле после этого - это функция "Admin" (автоматические функции CRUD для записей пользовательского стиля, включая рендеринг веб-интерфейса), все они разработаны с использованием метода Twisted/async). Я спросил о пользователе/​​логине в вопросе, если окажется, что есть уже интегрированное решение (например, флажок-логин и флажок-admin), и в этом случае я бы с радостью отбросил свой код и переключился на него.

Ответ 1

Вам действительно нужно все async? Рассмотрите асинхронные WebSockets, но отображает страницу синхронизации. Если необходимо, добавьте прокси-сервер async downstream или балансировщик нагрузки, который фактически устранит накладные расходы IO-сервера приложения.