crontab 으로 스케쥴 잡 등록 시키기
python 과 crontab 을 잘 연결시키면 스케쥴 작업을 완벽하게 만들 수가 있습니다. 간단한 배치 작업들은 굳이 다른 시스템을 사용할 이유가 없습니다.
기본 editor 를 emacs 로 변경하기
$ export EDITOR=emacsclient
아무 설정을 하지 않으면 vi 로 설정되어 있습니다.
기본적인 기능
CRUD 에서 U 는 C 와 동일하니 기능을 살펴보기로 합니다.
입력 (Create)
$ crontab -e
보기 (Read)
$ crontab -l
지우기 (Delete)
$ crontab -d
주기 결정
* * * * * 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
실제 예
* * * * * ls -la
인코딩 관련
crontab 으로 파이썬 스케쥴을 돌릴때 특히나 console 에 한글을 출력하는 경우에 에러가 자주 발생합니다. Unicode 에러 인데요. crontab 은 shell 환경을 가져오지 않기 때문에 발생합니다. 해결 방법은 의외로 간단합니다. crontab 에서 입력 할때 마치 쉘 환경 처럼 적어주면 끝입니다.
PYTHONENCODING=utf-8 LANG=ko_KR.UTF-8 0 * * * 1-5 source /Users/crazia/miniconda3/bin/activate /Users/crazia/miniconda3/envs/cr-mon/ && /Users/crazia/miniconda3/envs/cr-mon/bin/python /Users/\ crazia/work/python-projects/cr_mon/manage.py stats >> /Users/crazia/work/stats.log 2>&1
miniconda 상에서 cr-mon 이라는 환경을 만들고 django style console 로 만들어서 실행시키고 로그를 남기는 예제 입니다.