我是新来的python和Django,我试图在Django中实现websockets。
我所做的是我按照websockets documentation
中描述的步骤问题是所描述的服务器端命令必须在控制台中运行。当我从控制台运行它,它的工作原理,但我想在GET
请求异步运行它在Django视图内。当我尝试它时,服务器引发了一个异常,如RuntimeError: There is no current event loop in thread 'Thread-2'
。
更具体地说,我想使用该技术来显示实时日志。例如,一个oracle过程执行一个插入,并且服务器将它推入带有websockets的页面。
我在实施描述的错误路径或任何人都可以提出一个正确/更好的解决方案?
我在这两个Django的开发服务器和Uwsgi和Nginx的服务器上实现Django的版本1.9,Python版本3.5.2上RedHatEnterpriseServer版本:6.7Django websockets实现
UPDATE
从上面的网址和我的确切代码把它放在视图中。
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文档例如精确副本
你能告诉我们你试过什么吗? – juankysmith
@juankysmith请参阅更新。 – arminrock