具有 Web 套接字客户端的 WSGI 兼容组件?

WSGI compliant component with web socket client?

我正在尝试将 RESTful 响应器集成到 Crossbar 应用程序中,最适合的似乎是一方面 WSGI service. This service ideally should be part of the rest of the pub/sub infrastructure, being able to receive WAMP 事件,另一方面响应 HTTP 请求。

困难在于 运行 允许异步网络套接字事件并额外提供 WSGI 兼容组件的事件循环。在我看来 Pulsar 应该能够做到这一点,但我一直无法弄清楚如何设置它,可用示例中的 none 正好演示了这个用例。

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?

上面演示了两个部分,一个Autobahn WAMP客户端和一个Flask WSGI组件。我如何 运行 这两个并行,允许一个线程通过 HTTP 和网络套接字接收事件?我并不特别关心 Python 的版本或底层库(Twisted、asyncio、Pulsar、Flask),我只是想以某种方式得到这个 运行ning。

WSGI 本质上是同步的API。我不知道 Pulsar,但如果它能神奇地解决这个问题,我会感到惊讶。

方式Crossbar.io integrates with classic Web (and synchronous) stacks is via a REST-bridge. Currently, we have the WAMP "Publisher" role covered today (2015/02): that is, you can publish an WAMP event by doing a simple HTTP/POST http://crossbar.io/docs/HTTP-Pusher-Service/。 Crossbar.io 中的这个 REST 桥将在不久的将来扩展到涵盖所有 4 个 WAMP 角色。

如果您退后一步,主要关心某事,请在您的应用中创建一个 REST API,它直接与 WAMP 和异步内容集成,我想看看 Twisted Klein. Twisted Klein is essentially modeled after Flask, but at the source level. We have a blog post that covers exactly this: Mixing Web and WAMP code with Twisted Klein