자동매매 프로그램을 돌리다보면 여러가지 이유로 종료되는 경우가 있습니다. 그 원인은 프로그램 자체 오류일 수도 있고, 사용하는 API 때문일 수도 있습니다. 자동매매를 돌리는 이유가 매매 시점을 빨리 찾기 위함인데 프로그램이 죽어있으면 아주 곤란합니다.

 

보통은 프로세서 id를 찾아서 잘 동작하는지 확인하는 방식으로 watchdog 프로그램을 만드는데요. 다행히 파이썬에서는 프로그램 단위로 동작 여부를 확인할 수 있는 방법이 있습니다. 바로 subprocess package를 사용하는 것입니다. 간단하게 call() 함수에 실행할 프로그램 명령어를 입력하면 됩니다.

import os 
import time 
from subprocess import call
cmd = 'python myprogram.py'

while(1) :
   call(cmd)
   time.sleep(30)

정상 동작한다면 return이 없이 계속 block되어 있고, 프로그램이 정상 혹은 비 정상으로 종료하면 return이 됩니다.

 

call은 popen이라는 함수의 특수한 사용 예입니다. 만약 프로그램을 실행시키고 다른 뭔가를 더 하고 싶다면 popen을 사용하시면 됩니다. 예를들어 terminal은 하나인데 여러 프로그램을 실행시켜야 한다면 popen을 사용하시면 좋습니다.

 

추가로 call 함수는 return 값이 있습니다. call 함수로 실행한 프로그램에서 정상 종료와 비 정상 종료를 return 값으로  구분할 수도 있습니다.

 

 

 

 

반응형

설정

트랙백

댓글