WSGI兼容组件和WebSocket客户端?

2024-04-28 03:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在Crossbar应用程序中集成RESTful响应程序,对于这个应用程序,最适合的似乎是WSGI service。理想情况下,该服务应该是pub/sub基础设施的一部分,一方面能够接收WAMP事件,另一方面能够应答HTTP请求。在

困难在于运行一个事件循环,该循环允许异步web套接字事件,并额外提供一个WSGI兼容组件。在我看来,Pulsar应该能够做到这一点,但是我还没能弄清楚如何设置它,没有一个可用的示例能够准确地演示这个用例。在

value = None

class Foo(ApplicationSession):
    def onJoin(self, details):
        yield self.subscribe(self.bar, 'bar')

    def bar(self, data):
        value = data


app = Flask(__name__)

@app.route('/')
def baz():
    return value


if __name__ == '__main__':
    runner = ApplicationRunner('ws://127.0.0.1:8080', 'test')
    runner.run(Foo, start_reactor=False)

    # now what?

上面演示了两个部分,一个高速公路WAMP客户端和一个Flask WSGI组件。如何并行运行这两个线程,让一个线程同时通过HTTP和websocket接收事件?我并不特别关心Python的版本和底层库(Twisted、asyncio、Pulsar、Flask),我只想以某种方式运行它。在


Tags: selfapp应用程序httpflaskwsgidatafoo
1条回答
网友
1楼 · 发布于 2024-04-28 03:22:01

WSGI是一个固有的同步API。如果我不知道的话,我会很惊讶的。在

Crossbar.io与经典Web(和同步)堆栈集成的方式是通过REST桥。目前,我们今天(2015/02)讨论了WAMP“Publisher”角色:也就是说,您可以通过简单的HTTP/POSThttp://crossbar.io/docs/HTTP-Pusher-Service/来发布WAMP事件。这个休息桥进来了横杆io在不久的将来将扩展到涵盖所有4个WAMP角色。在

如果您退一步,并且主要关心某个的东西在您的应用程序中创建了一个restapi,它直接与WAMP和异步的东西集成,那么我将看到一个Twisted Klein。Twisted Klein基本上是模仿烧瓶,但在源代码级别。我们有一篇博文正好涵盖了这一点:Mixing Web and WAMP code with Twisted Klein

相关问题 更多 >