Асинхронный сервер python? Я пишу сервер для игры. Но не могу понять, как сделать так, чтобы он был многопоточный.
к примеру, если бы нужно было работать только с одним клиентом, то можно было бы просто написать:import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
while True:
data = conn.recv(1024)
if not data:
break
conn.close()
Я бы мог принимать так сообщения и от нескольких клиентов. Но в этом случае сервер был бы синхронным. Чтобы добиться асинхронности, надо каждому клиенту предоставить свой поток, чтобы запросы других пользователей не мешали по времени слушать этот. Как это реализовать?

21 Авг 2019 в 06:34
183 +1
0
Ответы
1

Для создания асинхронного сервера в Python, вы можете использовать библиотеку asyncio. Вот пример простого асинхронного сервера, который принимает сообщения от нескольких клиентов:

import asyncio
async def handle_client(reader, writer):
while True:
data = await reader.read(1024)
if not data:
break
message = data.decode()
addr = writer.get_extra_info('peername')
print(f"Received {message} from {addr}")
writer.write(data)
await writer.drain()
print("Client disconnected")
writer.close()
async def main():
server = await asyncio.start_server(
handle_client, '', 9090)
addr = server.sockets[0].getsockname()
print(f'Serving on {addr}')
async with server:
await server.serve_forever()
asyncio.run(main())

В этом примере функция handle_client отвечает за обработку сообщений от клиента. Она использует асинхронный ввод/вывод для взаимодействия с клиентом. Функция main создает асинхронный сервер и запускает его на порту 9090.

Каждому подключенному клиенту будет предоставлен свой поток исполнения, что позволяет серверу одновременно обрабатывать сообщения от разных клиентов.

Для запуска асинхронного сервера вам необходимо запустить функцию main с помощью asyncio.run().

20 Апр в 13:16
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир