Вы не опубликовали полный пример, но я думаю, что я вижу, где проблема.
Где / когда вы действительно читаете / получаете данные из сокета в client.py?
Так как похоже, что вы получили данные, сохраните их в переменной «data», а затем продолжите цикл навсегда декодирование этих данных, а не чтение из сокета .
Так что я думаю, вам нужно переместить цикл while в client.py снаружи, чтобы метод чтения / получения из сокета был внутри вашего цикла, а не снаружи, как кажетсясейчас.
Редактировать: Да, из полного кода, который вы опубликовали, я вижу, что действительно, это должно решить вашу проблему.