로컬에서 잘 돌아가는데 crontab 에 올리면 계속 죽는 프로그램이 있었다.
try: 1/0 except Exception, e: error = str(e) # ... 에러를 슬랙으로 쏴줌.
이처럼 에러를 처리하고 있는데 저처럼 에러를 처리하면 정확하게 안 나온다. 서버에서 돌리는데 슬랙으로
'[Errno 32] Broken pipe' 만 왔다. 구글링을 해봐도 딱히 결과를 찾을수 없었다... 일단 에러를 정확하게 출력하기 위해 구글링을 더 했고, 아래처럼 수정했다.
import sys try: 1/0 except: exc_info = sys.exc_info() error = traceback.format_exc() # ... 에러를 슬랙으로 쏴줌.
ide에서 직접 보는것처럼 아주아주 자세한 에러를 문자열로 리턴해준다.
https://docs.python.org/2/library/traceback.html
이렇게 나온 에러를 기반으로 원인을 찾았다.
https://stackoverflow.com/questions/15793886/how-to-avoid-a-broken-pipe-error-when-printing-a-large-amount-of-formatted-data
요거하고 비슷한 에러다. 결국 프로그램이 일정이상의 너무 많은 print를 출력하게 되면 에러가 발생한다는 건데... 그냥 crontab에서 실행할때 ./program.sh > /dev/null 처럼 출력결과를 버려주면 해결되었다.
'Python > 2.7 information' 카테고리의 다른 글
flatten list of lists (0) | 2018.10.16 |
---|---|
파이썬 읽어볼거리. (듀랑고 개발자분들의 글) (0) | 2018.04.30 |
파이썬으로 구글 시트 조작. (2) | 2018.02.07 |
python 멀티프로세스 락, 등등 (0) | 2017.09.24 |
전문가를 위한 파이썬 책에서 알아낸 것들.. (0) | 2017.07.15 |