我刚开始接触Python和Django,试图在Django中实现Websockets。我正在按照websockets documentation中描述的步骤进行操作。问题是服务器端命令必须在控制台中运行。当我从控制台运行它时,它可以工作,但是我想在Django视图中异步地使用
更具体地说,我想使用该技术显示实时日志。例如,Oracle过程执行插入并将其推送到带有Websockets的页面。
我是否在错误的路径上实现了所述内容,或者有人能够建议正确/更好的解决方案吗?
我正在使用Django版本1.9,在Django开发服务器和Uwsgi和Nginx服务器上实现,RedHatEnterpriseServer Release: 6.7上的Python版本为3.5.2。
当URL由此视图处理时,会出现上述错误。
我的
GET
请求运行它。当我尝试运行时,服务器会引发异常,类似于这样的异常:RuntimeError: There is no current event loop in thread 'Thread-2'
。更具体地说,我想使用该技术显示实时日志。例如,Oracle过程执行插入并将其推送到带有Websockets的页面。
我是否在错误的路径上实现了所述内容,或者有人能够建议正确/更好的解决方案吗?
我正在使用Django版本1.9,在Django开发服务器和Uwsgi和Nginx服务器上实现,RedHatEnterpriseServer Release: 6.7上的Python版本为3.5.2。
更新
我将以上URL中的确切代码放在了视图中。
def ws(request):
async def time(websocket, path):
while True:
now = datetime.datetime.utcnow().isoformat() + 'Z'
await websocket.send(now)
await asyncio.sleep(random.random() * 3)
start_server = websockets.serve(time, '192.168.4.177', 9876)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
return render(request,"ws.html")
当URL由此视图处理时,会出现上述错误。
我的
ws.html
完全复制了上述WebSockets文档示例。