crossover.io、WAMP、twisted (+ klein) 和 django/flask/bottle 如何交互?

Posted

技术标签:

【中文标题】crossover.io、WAMP、twisted (+ klein) 和 django/flask/bottle 如何交互?【英文标题】:How do crossover.io, WAMP, twisted (+ klein), and django/flask/bottle interact? 【发布时间】:2015-11-06 23:37:48 【问题描述】:

据我了解(显然,请纠正误解),提到的项目/技术如下:-

Crossover.io - WAMP 的路由器。跨语言。

WAMP - 一种异步消息传递协议,支持(除其他外)Pub/Sub 和 RPC。跨语言。

twisted - 一个异步循环,主要用于网络(低级)。特定于 Python。据我所知,目前 python 中的 crossover.io 实现是建立在 twisted 之上的。

klein - 建立在扭曲的模拟烧瓶之上,但异步(并且没有使烧瓶更易于使用的插件)。特定于 Python。

django/flask/bottle - 用于提供 Web 内容的各种堆栈/解决方案。所有都是同步的,因为它们实现了 WSGI。特定于 Python。

他们如何互动?例如,我可以看到,如何将 twisted 用于各种 python 应用程序之间的网络连接,以及任何语言的应用程序之间的 WAMP(crossover.io 是路由的一个选项)。

不过,对于网络,通常需要某种形式的基于 HTTP/浏览器的连接,而这正是 Python django 和替代方案历来使用的地方。然而,在它们之间的交互和交叉/扭曲方面,我似乎找不到太多。

需要明确的是,有钩针(和 klein)之类的东西,但这些似乎都不能解决我认为是基本问题的问题,即说“我希望有一个反应式用户界面到一些底层蟒蛇代码'。或者“我想让我的 python 代码更新当前正在查看的网页”的另一个基本问题。

传统上,我猜它使用 AJAX 处理,并且在 django et 提供的网页上类似。等,但在有限的硬件上,这似乎比异步方法可扩展性要低得多(由于扭曲和龙卷风等,这在 python 中是完全可行的)。

总结 WAMP/twisted 和 django/flask/bottle 等底层组件之间是否存在“自然”交互?如果是这样,它是如何工作的。

【问题讨论】:

【参考方案1】:

对于使用 WAMP 的 Web 应用程序,您有两种独立的机制:提供 Web 资产和 Web 应用程序,然后与后端(或其他 WAMP 组件)通信。

您可以使用 Django、Flask 或任何其他 Web 框架来提供资产 - 或集成到 Crossbar.io 中的静态 Web 服务器。

您作为资产的一部分交付的 javascript 然后连接到 Crossbar.io(或另一个 WAMP 路由器),后端或其他组件也是如此。然后将其用于例如发送数据以显示到 Web 前端或传输用户输入。

【讨论】:

感谢您的回答,但总而言之,您似乎是在说“使用 JS 在普通网络内容之上进行交互”,我认为您指的是 AJAX?这真的是唯一的方法吗?特别是,这意味着很多真正的“肉”将需要 javascript 而不是 python,我认为至少在某些情况下这是可取的。 WAMP 旨在取代所有 AJAX 东西——我们看到的主要用例是单页应用程序,其中 JavaScript 在浏览器中工作是必需的。对于经典网页,可能需要在没有 JavaScript 的情况下运行,WAMP 可能最好仅用于渐进增强。

以上是关于crossover.io、WAMP、twisted (+ klein) 和 django/flask/bottle 如何交互?的主要内容,如果未能解决你的问题,请参考以下文章

8.Twisted 多线程

Twisted 综述

您如何通过 Python(而不是通过 Twisted)运行 Twisted 应用程序?

您如何通过Python(而不是通过Twisted)运行Twisted应用程序?

Twisted:使用 pyglet-twisted 时如何从 EndPoint 调用 Deferred

怎样安装twisted