2016-06-09 4 views
-5

저는 서버를 시작하기 위해 python으로 스크립트를 작성했습니다. 루프가 진행되는 동안 모든 서버가 작동하는지 확인하기 위해 상태를 확인하고 있습니다.모든 조건이 충족되기 전에 루프가 종료됩니다.

하지만 어떻게 든 루프는 모든 조건이 충족되기 전에 종료됩니다.

왜 이런 일이 발생했는지에 대한 아이디어가 있습니까?

#check if all servers are RUNNING 
while (osb2State!='RUNNING') and (osb3State!='RUNNING') and (osb4State!='RUNNING') and (osb5State!='RUNNING') and (osb6State!='RUNNING') : 

    cd('domainRuntime:/ServerLifeCycleRuntimes/'+sOSB2); 
    osb2State = cmo.getState(); 
    if osb2State == 'ADMIN': 
     resume(sOSB2); 

    cd('domainRuntime:/ServerLifeCycleRuntimes/'+sOSB3); 
    osb3State = cmo.getState(); 
    if osb3State == 'ADMIN': 
     resume(sOSB3); 

    cd('domainRuntime:/ServerLifeCycleRuntimes/'+sOSB4); 
    osb4State = cmo.getState(); 
    if osb4State == 'ADMIN': 
     resume(sOSB4); 

    cd('domainRuntime:/ServerLifeCycleRuntimes/'+sOSB5); 
    osb5State = cmo.getState(); 
    if osb5State == 'ADMIN': 
     resume(sOSB5); 

    cd('domainRuntime:/ServerLifeCycleRuntimes/'+sOSB6); 
    osb6State = cmo.getState(); 
    if osb6State == 'ADMIN': 
     resume(sOSB6);  

    java.lang.Thread.sleep(5000); 
+0

@abadamso는 java.lang.Thread를 사용했음을 눈치 챘지만 파이썬과 매우 흡사합니다. 이 태그가 올바르게 붙어 있습니까? –

+2

@ScottMermelstein : 저에게 [Jython] (http://www.jython.org/)처럼 보입니다. – user2357112

+1

테스트가 True이면 모든 서버가 '실행 중'이어야합니다. 따라서 하나의 서버가 실행되고 있지 않아도 루프가 루핑되어야하기 때문에 각 테스트 사이에 "또는"가 있어야합니다. 완벽한 구현을 위해 하나의 변수를 추가합니다. 루프 카운터를 사용하여이 루프를 종료하고 모든 서버가 잠시 동안 작동하지 않거나 n 루프가 실행되지 않는 경우 예외를 호출합니다. – Jerzyk

답변

3

먼저 파이썬이 아닌 자이 썬입니다. 조건은 == 'RUNNING'만 진정한 국가의 없음 경우입니다

while (osb2State!='RUNNING') and (osb3State!='RUNNING') and (osb4State!='RUNNING') and (osb5State!='RUNNING') and (osb6State!='RUNNING') : 

:

둘째를보십시오. 따라서 실행 상태에있는 모든 서버는 루프를 종료합니다. 서버가 모두 종료되기 전에 서버를 가동하려면 or이 아닌 and을 사용하십시오.

+0

답장을 보내 주셔서 감사합니다. 자이 썬에 대한 필자의 이해는 자이 썬이라는 자바 라이브러리가있는 파이썬이다. 하지만 내 실수를 강조해 주셔서 감사합니다. 매우 감사! –

관련 문제