Я борюсь с некоторыми архитектурными решениями для масштабируемого приложения интернет-приложений.
Я решил использовать мой проект 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), и в этом случае я бы с радостью отбросил свой код и переключился на него.