Я пытаюсь читать строки с сервера tcp, который я запускал в том же скрипте. Я могу отправить одну команду и прочитать ее вывод, но в конце (после прочтения всех выходов) похоже, что эта программа зависает в readline, я пробовал почти все решения here и here, но все же он зависает.Python Подпроцесс readline висит() после прочтения всего ввода
Большинство из этих решений предлагают проверить, нет ли вывода readline, нет или нет, но в моем случае программа никогда не возвращается из последнего чтения и просто висит там.
Edit: TCP сервер не в моей власти, или сказать, что я просто должен проверить серверный скрипт, поэтому я не могу изменить его. Кроме того, можно ли отправлять команды на запуск сервера с использованием python без использования подпроцесса? любая лучшая альтернатива?
def subprocess_cmd(command):
process=subprocess.Popen(command,stdin=subprocess.PIPE,stderr=subprocess.STDOUT,stdout=subprocess.PIPE, shell=True)
for cmd in ['python3 -u tcp_server.py 123 port1']:
subprocess_cmd(cmd)
process.stdin.write('command like print_list')
process.stdin.flush()
while True:
line=process.stdout.readline()
if line == '':
break
вам придется опубликовать свой код, чтобы мы могли помочь. –
@ Jean-FrançoisFabre код был добавлен –