我是新來的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