2012-01-09 10 views
5

저는 crontab을 사용하여 subprocess.popen()을 사용하여 여러 procceses를 시작한다고 가정하는 python 스크립트를 시작했습니다. 나는이 명령을 사용하여 30 분이 걸릴 수있는 절차를 시작합니다. 결과가 나오기를 기다리지 않고 원래의 crontab 실행 스크립트를 계속 사용하고 싶지 않습니다. 문제는 crontab이 subprocess.call처럼 subprocess.popen을 처리하는 것입니다! 유닉스 crontab은 python의 subprocess.popen을 잘 처리하지 않습니다.

난 내 로그 파일 및 제는 popen 성공 프로세스 목록에서 명확하게 볼 수 있지만 백그라운드에서 contiue 나던

- 내가 리디렉션하고 있기 때문에는 popen 프로세스가 종료 firts 때까지 기다립니다 ...

이 될 수있다 stderr/steout을 파일로? 내가 연결이 표시되지 않습니다하지만 어쩌면 ...

내 코드는 다음과 같다 :

# inside process spawning loop 
# open and append process to list 
mainLogger.debug("about to launch process with popen") 
scoopPopenObj = subprocess.Popen(cmdArgsString, 
        shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile) 
openScoops.append((fileName,time.time(),scoopPopenObj)) 
# rest of script, here is where i dont get until scoopPopenObj finishes.. 

어떤 아이디어?

답변

1

나는이이 문제와 관련되어 있는지 모르겠지만, stdout 같은 파이프에 stderr를 리디렉션 할 때 documentation에 설명 된대로 당신은 stderr=subprocess.STDOUT를 사용해야합니다.

관련 문제