본문 바로가기
파이썬

파이썬 Cron 및 virtualenv

by º기록 2020. 11. 16.
반응형

cron에서 Django 관리 명령을 실행하려고합니다. 내 프로젝트를 샌드 박스로 유지하기 위해 virtualenv를 사용하고 있습니다.

여기와 다른 곳에서 virtualenv 내에서 실행중인 관리 명령을 보여주는 예제를 보았습니다.

0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg

그러나 syslog에 태스크가 시작되어야 할 때 항목이 표시 되더라도이 태스크는 실제로 실행되지 않습니다 (스크립트의 로그 파일이 비어 있음). 쉘에서 수동으로 라인을 실행하면 예상대로 작동합니다.

현재 cron을 통해 명령을 실행할 수있는 유일한 방법은 명령을 분리하여 멍청한 bash 래퍼 스크립트에 넣는 것입니다.

#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg

편집하다:

ars는 작동하는 명령 조합을 제시했습니다.

0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg

적어도 제 경우에는 virtualenv에 대한 활성화 스크립트를 호출해도 아무 일도 일어나지 않았습니다. 이것은 쇼와 함께 작동합니다.

 

해결 방법

 

가상 환경에서 python 을 사용하여이 작업을 수행 할 수 있어야합니다.

/home/my/virtual/bin/python /home/my/project/manage.py command arg

편집 : django 프로젝트가 PYTHONPATH에 없으면 올바른 디렉토리로 전환해야합니다.

cd /home/my/project && /home/my/virtual/bin/python ...

cron에서 오류를 기록 할 수도 있습니다.

cd /home/my/project && /home/my/virtual/bin/python /home/my/project/manage.py > /tmp/cronlog.txt 2>&1

시도 할 또 다른 방법은 맨 위에있는 manage.py 스크립트를 동일하게 변경하는 것입니다.

#!/home/my/virtual/bin/python

 

참조 페이지 https://stackoverflow.com/questions/3287038

 

 

반응형

댓글