10

我正在为可扩展的物联网应用程序的一些架构选择而苦苦挣扎。

我选择将我的项目建立在Twisted的基础上,并使用Cyclone框架来提供许多Tornado便利(websockets、auth-decorators、secure-cookies 等)

使用 Twisted 核心对我来说效果很好。我有许多 IP 协议和硬件接口,所有这些都证明在 twisted 内部有很好的库支持(并且向我的应用程序添加新协议和接口是我项目范围蔓延的最有可能的角度),所有这些都需要 Twisted非常低的 CPU 并提供非常高的连接数。

我的问题在于二阶 webapp 功能。

我引入了 Cyclone,认为有了它的身份验证好东西(OpenID、oauth、用户身份验证装饰器和安全 cookie),在我的 web 应用程序中实现用户/会话/管理功能并不需要太多。在 500 多行抽象我的数据库(通过txmongo)并只是建立用户登录之后,我很清楚我两个:

  1. 不明白 Cyclone/Tornado 在用户/会话/管理空间中带来的影响有多大,并且
  2. 如果您尝试构建多用户身份验证 web 应用程序,不了解填补空白所需的代码量

一位朋友指给我看Flask,最初我认为这是完全多余的,直到我找到了flask pluginsFlask-LoginFlask-Admin的组合将完全满足我的用户、会话和用户管理员的需求,使我无法编写我猜想的大约 2k 行代码。不幸的是,flask 插件都充斥着阻塞代码和对阻塞库的调用。即使使用WSGI 容器,我也不认为它们与我的项目兼容,因为用户/会话功能在每次页面加载时都会发生(此外,我没有看到任何捷径可以让我将它们移植到异步世界而无需工作大致相当于重写它们)

我的问题是:

在 python 异步空间中(......希望在 Twisted 空间中,考虑到我的协议需求),是否有任何插件或替代框架提供类似于 Flask-Login 和烧瓶管理员?

PS 我将Klein视为明显的 Twisted 版本的 Flask,但它似乎没有插件生态系统,而且我在那里找不到任何强大的用户/会话/管理员。

PPS 在我写这个问题的时候,我已经写了我自己的(蹩脚的)用户登录会话系统。所以我真正追求的是“管理”功能(用户样式记录上的自动 CRUD 功能,包括 Web UI 渲染,所有这些都以 Twisted/async 方式设计)。我在问题中询问了用户/登录,以防万一有一个已经集成的解决方案(例如flask-login和flask-admin),在这种情况下,我很乐意放弃我的代码并切换到那个。

4

1 回答 1

2

你真的需要一切异步吗?考虑异步 WebSockets 但同步页面呈现。如果必须,添加异步下游代理或负载均衡器,这将几乎消除应用服务器的 IO 开销。

于 2014-09-08T01:25:01.023 回答