чтение данных из веб-сокета без блокировки кода - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь создать неблокирующий код с помощью асинхронного Python.На эту тему есть несколько тем, но мне так и не удалось адаптировать их к коду.Это был бы минимальный пример, основанный на this :

import asyncio
import websockets

async def ws_rec(websocket, path):
    while True:
        data = await websocket.recv()       
        print(data)

start_server = websockets.serve(ws_rec, 'localhost', 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
print("ok")

Как можно адаптировать код для печати «ok»?Зачем мне для этого даже нужно asyncio?

1 Ответ

0 голосов
/ 04 июня 2019

Большое спасибо за ответы. Я нашел обходной путь с простой websocket

from simple_websocket_server import WebSocketServer, WebSocket

class SimpleEcho(WebSocket):
    def handle(self):
    # echo message back to client
        print(self.data)
        self.send_message(self.data)

    def connected(self):
        print(self.address, 'connected')

    def handle_close(self):
        print(self.address, 'closed')


def run():
    server = WebSocketServer('localhost', 8765, SimpleEcho)
    server.serve_forever()

from threading import Thread

ws_run = Thread(target=run)
ws_run.start()

print("ok")

Прямо сейчас это выглядит как рабочее решение для меня.

...