Работают два клиента одновременно и на client1 приходят данные, то client2 зависает, что не так?

Если клиент2 зависает, когда приходят данные на client1, это может быть связано с блокировкой выполнения программы из-за того, что данные не обрабатываются параллельно. Проверьте, что ваше приложение использует многопоточность или многопроцессорность для обработки данных от клиентов параллельно.

В Python для работы с многопоточностью можно использовать модуль threading, а для работы с многопроцессорностью - модуль multiprocessing. При использовании многопоточности рекомендуется избегать использования глобальных переменных, так как они могут привести к ситуации гонки за данные (race condition). Вместо этого лучше использовать механизмы синхронизации, такие как блокировки (Locks) или очереди (Queues).

При работе с сетевыми приложениями также важно учитывать асинхронность. В Python есть асинхронные фреймворки, такие как asyncio, которые позволяют обрабатывать сетевые запросы без блокировки выполнения других операций.

Также следует проверить, возможно ли, что при обработке данных от client1 происходит какая-то длительная операция или блокировка, из-за которой client2 не получает достаточно ресурсов для своей работы.

В целом, для решения проблемы с зависанием client2 при приходе данных на client1, необходимо внимательно изучить структуру вашего приложения, обработку данных и обеспечить правильную работу с многопоточностью или асинхронностью.