python/기타
python 으로 window service 관리
zoomer75
2021. 10. 6. 17:08
최근 윈도우 웹서버에서 apache 서비스가 자꾸 죽는 경우가 생겨서
python 으로 window 서비스를 정지, 시작, 재시작 프로그램을 작성하였습니다.
필요 모듈로는 pywin32, requests
pip install pywin32
pip install requests
을 이용해서 설치합니다.
import requests
import win32serviceutil
r = requests.get('http://www.aaa.com', timeout=10)
# 응답이 없거나 200 이 아니면 재시작
if r.status_code != 200 :
try:
win32serviceutil.QueryServiceStatus(serviceName)
except Exception as e:
print("그런 서비스가 없습니다.")
else:
win32serviceutil.RestartService(serviceName)
참고로 serviceName 은 서비스 관리자에서 나타나는 서비스명입니다.
win32serviceutil.QueryServiceStatus('apache2.4') 했을 때 튜플로 7개의 인자가 반환되는데
그중 2번째 값이 현재 서비스의 실행상태 입니다.
값이 1이면 정지상태 4이면 실행중입니다.
이 값을 이용하여 서비스가 실행중이면 win32serviceutil.RestartService(serviceName)
정지중이면 win32serviceutil.StartService(serviceName) 을 사용하면 되겠습니다.
반응형