2014-11-18 5 views
0

2 개의 스레드가있는 프로그램이 있습니다. 모든 스레드는 원격 호스트에 다른 명령을 보내고 출력을 파일로 경로 재 지정합니다. 스레드는 다른 원격 호스트를 사용합니다. 나는 pxssh와의 연결을 생성하고 'sendline'로 원격 호스트에 명령을 보내려고했습니다 내가 명령 (모든 호스트에 약 500 개 명령)의 고정 수를 보낼 수 있습니다고정 된 전송 명령 후 원격 호스트에서 명령을 얻을 수 없습니다.

s = pxssh.pxssh() 
try: 
    s.login (ip, user, pswd) 
except: 
    logging.error("login: error") 
    return 

logging.debug("login: success") 
s.sendline("ls/>> tmpfile.log") 
s.prompt() 

그 'sendline'정지 후 일. 연결은 정상이지만 원격 호스트에서 명령을받을 수 없습니다. 일부 리소스가 부족한 것처럼 보입니다. 어떻게 될 수 있습니까?

는 각 쓰기 사이에서 읽는 :이 문제를 해결하기 때문에 답변으로

+0

각 글쓰기 사이를 들으십니까? 호스트가 출력물을 출력하고 있고 그것을 읽지 않는다면, 조만간 버퍼가 채워질 것이고 더 많은 것을 쓸 공간이 생길 때까지 차단 될 것입니다. –

+0

도움을 주셔서 감사합니다. 작동합니다! 어떤 경우에는 출력을 읽지 않았고 버퍼가 가득 찼습니다 ... – sammy

답변

0

재개시를? 호스트가 출력물을 출력하고 있고 그것을 읽지 않는다면, 조만간 버퍼가 채워질 것이고 더 많은 것을 쓸 공간이 생길 때까지 차단 될 것입니다. 각 글을 쓰기 전에 터미널에서 사용할 수있는 데이터를 읽어야합니다. 아무 것도하지 않으려는 경우에도 마찬가지입니다.

출력에 전혀 신경 쓰지 않는다면 루프 내에서 끊임없이 읽는 스레드를 만들면 주 스레드가 읽을 수 없게됩니다. 그러나 코드가 출력물의 어떤 부분을 가지고 무엇인가를해야한다면, 그렇게하지 마십시오.