2011-08-12 8 views
3

django 프로젝트는 "at"스케줄러를 사용하여 예약 된 시간에 Python 파일을 호출합니다. 이것은 내 models.py 내에서 실행됩니다.Django Apache - 루트로 스크립트 실행

command = 'echo "python /path/to/script.py params" | /usr/bin/at -t [time] &> path/to/at.log' 
status = os.system(command) 

여기서 [time]은 예약 시간입니다. Django Dev 서버에서 실행할 때 완벽하게 작동합니다 (보통 root로 실행되지만 다른 사용자와도 잘 작동합니다) 하지만 mod_wsgi를 사용하여 Apache에 내 응용 프로그램을 배포하면 작동하지 않습니다. at logs는 작업 일정이지만 작업을 실행하지 않음을 보여줍니다. 소유권을 www 데이터, 사용 권한으로 변경하는 것부터 모든 사용자에게 실행 가능하도록 만든 루트 (대규모 보안 문제) root 사용자로 아파치를 실행하고 싶습니다.

+0

거기서'echo'는 무엇을하고 있습니까? – Leopd

+0

'at' 명령은 매개 변수없이 실행되도록 예약 된 실행 파일의 이름 만 사용합니다. 'echo'는 기본적으로'at'가 실행 파일을 매개 변수와 함께 스케쥴하도록합니다. 'at '에 대한 메뉴얼 페이지를 보아라. – melsk

+0

나는 따옴표가 없다고 생각한다. Echo는 python 키워드로 작성됩니다. – Leopd

답변

2

예약 된 작업에는 cron 또는 celery을 사용하십시오. 루트로 뭔가를 실행해야한다면 스크립트를 간단한 데몬으로 다시 작성하고 루트로 실행하면 zeromq을 사용하여 쉽게 명령을 전달할 수 있습니다.

+0

반복 작업이 아니므로 cron을 사용할 수 있습니까? – melsk

+0

반복되지 않습니까? 나는 그것이라고 추정했다. 언제/얼마나 자주이 작업을 실행 하시겠습니까? – zeekay

+0

요청시. 무작위로 무작위로? – melsk