Асинхронный сервер на python и библиотеке asyncio, почему функция recv блокирует при наличии await?
Кодил асинхронный сервер на asyncio, может не до конца понял концепцию асинхронного программирования, но столкнулся с проблемой, что не принимает второе подключение клиента, хотя вроде как event_loop должен в цикле постоянно переключаться между этими функциями, все тормозится на user.recv(2048), клиентская сторона обычная, подскажите, что не так сделано?
import asyncio
import time
from Socket import Socket
class Server(Socket):
def __init__(self):
super(Server, self).__init__()
self.bind(("127.0.0.1", 1279))
self.listen(5)
self.users = []
def main(self):
func = [
asyncio.ensure_future(self.create_socket()),
asyncio.ensure_future(self.receive_message())
]
ioloop = asyncio.get_event_loop()
while True:
ioloop.run_until_complete(asyncio.gather(*func))
async def create_socket(self):
print("create socket")
await self.receive_message()
user_socket, user_address = self.accept()
print(user_socket)
self.create_user_socket(user_socket)
return user_socket, user_address
def create_user_socket(self, user_socket):
self.users.append(user_socket)
print(self.users)
async def receive_message(self):
for user in self.users:
print("receive")
print(asyncio.gather)
data = await user.recv(2048)
print(f"User sent")
server = Server()
server.main()