Я пытаюсь реализовать простой сервер веб-сокетов, но застрял при попытке запустить код параллельно.
Код, который я пытаюсь запустить параллельно, выглядит следующим образом:
import keyboard
pressed_key = "None"
defined_keys = {
"1": "a",
"2": "b",
"3": "c",
"4": "d",
"5": "e",
"6": "f",
"7": "g",
"8": "h"
}
def set_pressed_key():
global pressed_key
pressed_key = "None"
for key in defined_keys:
keyboard.on_press
if keyboard.is_pressed(key):
# print(chr(27) + "[2J")
pressed_key = defined_keys[key]
break
def main():
while True:
set_pressed_key()
print(pressed_key)
main()
на основе https://websockets.readthedocs.io/en/stable/intro.html#browser -based-example Я создал функцию для отправки pressed_key
через веб-сокеты:
async def sendkey(websocket, path):
while True:
await websocket.send(pressed_key)
await asyncio.sleep(1/10)
и при запуске с
start_server = websockets.serve(sendkey, "127.0.0.1", 5678)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
он работает, но блокируется, и если я пытаюсь запустить main после него, он никогда не выполняется. Я попытался создать поток для него, но не смог заставить его работать, я также прочитал, что использование потоков не всегда правильно.