Я использую стандартную клиентскую панель asyncio сокета ниже:
import asyncio
async def repetitive_client_request(message, loop):
reader, writer = await asyncio.open_connection('127.0.0.1', 8888, loop=loop)
while True:
await asyncio.sleep(1)
writer.write(message.encode())
await writer.drain()
data = await reader.read(100)
print('Received: {}'.format(data.decode()))
print('Close the socket')
writer.close()
message = 'hi'
loop = asyncio.get_event_loop()
loop.run_until_complete(repetitive_client_request(message, loop))
loop.close()
97% времени все работает нормально, но иногда последовательные запросы объединяются, например, 'hihihihi'
.Кто-то предположил, что такое поведение не является чем-то необычным в TCP.Как я могу изменить вышеупомянутое на UDP, и должно ли это решить проблему?
Редактировать: Только что нашел это в документах: Changed in version 3.6: The socket option TCP_NODELAY is now set by default.
Таким образом, похоже, что не Nagle отвечает за объединение этого сообщения.