我正在尝试在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),我只想以某种方式运行它。在
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
相关问题 更多 >
编程相关推荐