我试图在同一个python应用程序中运行一个websockets服务器和一个http服务器。看起来我试图运行两个永久循环,而第二个循环没有被激活。有什么建议可以让这两个服务器都运行吗?
httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()
asyncio.get_event_loop().run_until_complete(
websockets.serve(echo, 'localhost', 8001))
asyncio.get_event_loop().run_forever()
2条答案
按热度按时间oxf4rvwz1#
这里有一种方法可以在一个服务器上同时处理websockets和http请求。唯一的区别是两个处理程序都监听同一个端口。
我认为可以通过定义两个
aiohttp
应用程序来监听不同的端口。但是,在任何情况下,您都需要一个支持异步的HTTP服务器。AFAIKHTTPServer
是不支持异步的,因此您提出的解决方案无法工作,因为您将基于异步的服务器(websockets.serve
)与非异步服务器(HTTPServer
)混合在一起。t5zmwmid2#
Sanic似乎能够同时提供HTTP和WebSockets服务。
https://sanic.dev/en/guide/basics/app.html
不过,看起来很大很复杂。