2012-12-10 4 views
3

장고에서 다음의 파이썬 코드를 사용하여 장고에서 펄 스크립트를 실행합니다. 서브 프로세스 호출하기 장고에서 팝업하기

def run_command(cmd, input_data=None): 
    assert type(cmd) == list 
    stdout = '' 
    stderr = '' 
    p = subprocess.Popen(cmd, 
         bufsize=1000*1000, 
         stdin=subprocess.PIPE, 
         stderr=subprocess.PIPE, 
         stdout=subprocess.PIPE) 
    if (input_data): 
     p.stdin.write(input_data) 
    p.stdin.close() 
    log("closed stdin") 
    stdout = p.stdout.read() 
    log("read stdout") 
    stderr = p.stderr.read() 
    return (stdout, stderr) 

12:04에 우분투 10:04의 코드를 이동 한 후 p.stdout.read()에 대한 호출은 이제 다음 실패 시작했다. 그것이 실패하면 로그 파일에서 마지막으로 보는 것은 closed stdin이고 nginx는 502 Bad Gateway 페이지를 표시합니다.

+0

'stdout, stderr = p.communicate (input_data)'를 사용해 보셨습니까? btw, 당신은'bufsize = -1' (시스템 기본값)을 사용할 수 있습니다. – jfs

+0

방금 ​​시도했지만 불행히도 p.communicate (input_data)에서 여전히 오류가 발생했습니다. – FunLovinCoder

+0

추적 표시 란 무엇입니까? – jfs

답변

0

일시적으로 Nginx 대신 Django의 'runserver'를 사용하는 것이 좋습니다.

python manage.py runserver 1.1.1.1:8080

수행 할 수 있습니다 이것은 당신이 대신이 작업을 수행하려면 다음 예제를 사용하는 방법을 잘 모르는 경우 502

의 페이지에 대한 역 추적을 볼 수 있습니다 1.1.1.1을 'localhost'또는 여러분이 선택한 IP로 바꿉니다. 8080은 비 특권 포트로 바꿀 수 있습니다. 설정 파일을 수정하여 DEBUG=True으로 설정해야 할 수도 있습니다.