【问题标题】:Communication between Autobahn and Flask/TwistedAutobahn 和 Flask/Twisted 之间的通信
【发布时间】:2015-02-26 18:28:16
【问题描述】:

我正在使用 Autobahn 为 WebSocket 功能构建一个相当简单的应用程序。它与聊天服务器非常相似,但我需要做的一件事是了解如何在 WebSocketServerFactory 对象和我的 Flask 应用程序之间实质上共享资源。这里的例子:

https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/websocket/echo_wsgi

展示了如何结合 Flask 和 Autobahn,但在我的特定用例中,我希望能够在 Flask 组件的授权调用触发时动态添加聊天室。关于如何在 Autobahn 中的两个组件之间进行通信,是否有任何最佳实践?

【问题讨论】:

    标签: autobahn


    【解决方案1】:

    Flask 基于 WSGI,它是一个从根本上阻塞的 API。这与 Twisted 或 asyncio(AutobahnPython 支持的 2 个异步网络框架)不能很好地融合。

    这里有 2 个选项:

    【讨论】:

    • 我的问题真的是关于如何从 Flask 段中与 WebSocketServerFactory 对话(添加更多房间,删除房间)。在构建我的 Flask 蓝图时,我能够共享对 WebSocketServerFactory 的引用,但我想知道是否有更好的方法。尽管如此,您对使用阻塞 API 提出了一个很好的观点。我基于此:github.com/tavendo/AutobahnPython/blob/master/examples/twisted/… 是否应该重写此示例以使用 Twisted Klein?
    • 问题不在于从 Flask 对象获取对 AutobahnPython 对象的引用,而是两者都存在于不同的线程上。 Flask 存在于后台线程池的原因是它阻塞了代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多