0
Я написала код для чтения выхода из SSH, когда выполняется команда ниже приведен пример кодиногда питон select.select дает пустой строке
stdin, stdout, stderr = ssh.exec_command(cmd)
channel = stdout.channel
stdin.close()
channel.shutdown_write()
stdout_chunks=[]
exit_status = 1
#stdout_chunks.append(stdout.channel.recv(len(stdout.channel.in_buffer)))
stdout_chunks.append(stdout.channel.recv(1024))
#or channel.recv_ready() or channel.recv_stderr_ready()
while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready():
readq, _, _ = select.select([stdout.channel], [], [], timeout)
for c in readq:
if c.recv_ready():
stdout_chunks.append(stdout.channel.recv(512))
got_chunk = True
print stdout_chunks[-1]
if c.recv_stderr_ready():
print stderr.channel.recv_stderr(512)
got_chunk = True
if not got_chunk and stdout.channel.exit_status_ready() and not stderr.channel.recv_stderr_ready() and not stdout.channel.recv_ready():
stdout.channel.shutdown_read()
stdout.channel.close()
stdout.channel.recv_exit_status()
break
Но когда я печать readq иногда я получаю пустую строку как []
из-за того, что мое исполнение не продолжается. Как справиться с подобным сценарием
select всегда возвращает, увеличился ли файл с момента последнего чтения, а затем, как он возвращает пустой список? –