Учитывая следующий код:
from collections import deque
import websockets
import threading
import asyncio
# asyncio bugfix where CTRL+C won't exit when run_forever()
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
clients = set()
queue = deque()
async def handle_client(client, path):
try:
clients.add(client)
async for buffer in client:
queue.append(buffer)
await client.send(buffer)
finally:
clients.remove(client)
def start_loop(port):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(websockets.serve(handle_client,
host='localhost',
port=port))
loop.run_forever()
def start(port=1234):
threading.Thread(target=start, args=(port,)).start()
Позвонив на start()
и взаимодействуя с сервером, я ожидал, что смогу получить данные из глобальных переменных queue
и clients
, но они не кажутся измененными изнутри handle_client()
.Почему это так?