高速公路 WAMP 服务器的命令式客户端?
Posted
技术标签:
【中文标题】高速公路 WAMP 服务器的命令式客户端?【英文标题】:Imperative client for autobahn WAMP server? 【发布时间】:2013-05-14 02:51:03 【问题描述】:我正在使用 autobahn 运行 websocket 服务器来补充我的 Django 应用程序。有时,我需要将消息从 Django 发送到 websocket 服务器,使用 websocket-client 模块可以正常工作。我很想改用 WAMP 协议,因为 RPC/PubSub API 看起来很棒,但是 python 客户端代码是作为一个扭曲的协议实现的,我不知道如何强制使用它,即像函数调用而不是来自一些外国事件循环。有什么我在文档中没有看到的,还是我的架构应该有所不同?
【问题讨论】:
Python 中的一切都是必要的。我认为您的意思是“阻塞”或“同步”。 关于架构,(至少)有 2 个选项:a)将 Autobahn 作为单独的服务器运行,并从 Django 作为客户端访问它。 b) 在 1 个进程中运行 Django 和 Autobahn(服务器)。这里有一个使用 Flask 和 Autobahn 执行 b) 的示例github.com/tavendo/AutobahnPython/blob/master/examples/… @Jean-PaulCalderone:你说得对,我想要一个同步的阻塞调用。 @oberstet:我做 a) 并且“作为客户端从 Django 访问”部分是我感兴趣的部分。我可以使用第三方模块为普通的 websocket 服务器做这件事,但我不知道如何进行 WAMP RPC 调用,例如来自 Django 视图函数。 @Simon a) 也是我正在寻找的东西,但我想知道对 Twisted 进行同步调用是否不是反模式。也就是说,我还不知道如何以另一种方式做到这一点。 【参考方案1】:https://github.com/itamarst/crochet 可能会帮助你解决这个问题。
【讨论】:
有趣。是的,使用这个库似乎你可以做你想做的事:在你的应用程序中运行高速公路(客户端),但阻止(从你的应用程序 POV)。 难道不能只实例化和使用 WAMP 客户端而不运行事件循环吗?或者除了 Twisted 和 asyncio 实现之外,还需要创建一个成熟的“无事件循环”实现吗?以上是关于高速公路 WAMP 服务器的命令式客户端?的主要内容,如果未能解决你的问题,请参考以下文章