Я пишу сервер Python TCP / IP, который принимает сообщения от одного клиента.Как только я получаю сообщение, я анализирую TCP-сообщение и генерирую ответ на основе его типа сообщения и отправляю сгенерированный ответ клиенту.
Мои приложения работают очень хорошо, пока вы не получите много сообщенийбыстро.Кажется, мой сервер блокирует ввод-вывод, пока он находится в процессе обработки сообщения.Например, пока я обрабатываю 3-е сообщение, 4-е сообщение никогда не будет принято моим сервером, поскольку я все еще обрабатываю 3-е сообщение.Поэтому 4-е сообщение теряется в пространстве.
Я думал об обработке этой проблемы с использованием потоков.Thread1
может сидеть там и только принимать входящие сообщения от клиента и помещать их в очередь, тогда как Thread2
будет читать сообщение запроса из Thread1
и генерировать ответ для отправки клиенту.После того, как он отправит сообщение, Thread2
выведет сообщение из очереди Thread1
.
Правильно ли приступить к решению этой проблемы?
РЕДАКТИРОВАТЬ: Еще через некоторое времятестируя, я понял, что всегда получаю сообщения Клиента;однако клиент истекает через 5-10 секунд, если он не получает ответного сообщения.Мне нужно ускорить обработку сообщений, потому что мой сервер думает, что все в порядке, потому что он на самом деле получает все сообщения и не теряет никаких сообщений, как я думал раньше.Проблема в том, что клиент нетерпелив.Любые советы о том, как ускорить производительность?Процесс на запрос, который выполняется параллельно, поэтому работа распределяется поровну?Единственная проблема, с которой я сталкиваюсь, это то, что сообщение появляется редко, когда я обрабатываю другое сообщение.