2012-11-01 3 views
5

파이썬에는 Windows 서비스 생성을 허용하는 것으로 보이는 win32service 패키지가 있습니다. 나는 조심스럽게 가능한 구글의 예를 확인하신 후, 예를 들어이 하나파이썬을 사용하여 Windows 서비스를 작성할 수 있습니까?

> python test.py install 
> python test.py debug 

불행하게도, 내가 노력 모든 예제는 오류와 함께 실패 : 나는 상승 된 명령 프롬프트에서 다음 ~/Documents/test.py에 코드를 배치하고 실행 한 Is it possible to run a Python script as a service in Windows? If possible, how?

:

Debugging service TestService - press Ctrl+C to stop. 
Error 0xC0000005 - Python could find the service class in the module 

AttributeError: 'module' object has no attribute 'AppServerSvc' 

(null): (null) 

Windows 7 64 비트 및 Windows 8 64 비트의 ActivePython (2.7.2.5 32 비트) 최신 버전으로 테스트했습니다. 물론 서비스 관리자를 통해 서비스가 실제로 시작되면 시작되지 않습니다.

내가 잘못했거나 Python이 최신 운영 체제의 서비스 작성에 사용되지 않습니까? 어쩌면 내가 Windows/python/pywin32의 특정 버전이 필요 한가? 물론 Windows XP에서 시작하는 모든 조합을 수동으로 테스트 할 수는 있지만 시간이 많이 걸립니다. (어쩌면 누군가가 이미 파이썬 및 Windows 서비스에 대한 경험이 있으며 내가 잘못하고있는 것을 나에게 암시 할 수 있습니다.)

업데이트 윈도우 XP 32 비트 가상 macine (동일한 코드, 동일의 ActivePython 배포)에서 테스트

-. 같은 오류가

+3

나는 거의 당신이 얻는 오류가 모듈 위치와 관련된 사소한 코딩 오류라는 것을 확신합니다. AppServerSvc를 초기화하는 코드의 [reproducible example] (http://sscce.org)을 게시하십시오. 또한 제목에 대한 분명한 대답은 예이며, 복제본에 연결하는 것조차 있습니다. – phihag

+0

@phihag 운영 체제 버전과 함께 문제를 재현하고 완전한 소스 코드를 재현하는 데 사용되는 명령 줄을 게시했습니다. "재현 가능한 예"를 위해 필요한 다른 정보는 무엇입니까? – grigoryvp

+0

재현 가능한 예제는 누구나 문제를 실행할 수있는 충분한 코드 (즉, * I *가'python test.py debug'를 입력 할 수있는 충분한 코드)입니다.귀하의 경우, 적어도'test.py'와 정의 된'AppServerSvc 클래스 '를 저장 한 파일이 있습니다. – phihag

답변

1

이 PyWin32에 대한 구축은 ActiveState에 버그가 있다는 사실을 표시 ActiveState의 파이썬 2.7.2.5 설치. 위의 링크 된 샘플 코드를 실행하면보고하는 것과 동일한 오류가 발생합니다.

그러나 Python 2.7.3 (2.7.2.5는 다운로드 할 수있는 것 같지 않음)을 다운로드하고 PyWin32 build 214 (ActiveState는 214 버전의 PyWin32를 사용하는 것 같습니다)을 추가하십시오. 그러면 모든 것이 잘 작동하는 것 같습니다. 나는 또한 PyWin32 (218)의 최신 빌드를 시도했고 올바르게 작동했다.

ActiveState에 대한 문제를보고 할 수 있습니다. (ActiveState에 대한 지원 계약이 없습니다.) ActiveState 사용 요구 사항이 없으면 표준 Python 빌드로 전환 할 수 있습니다.

필자는 Windows 2000부터 Server 2008 및 Windows 7까지 아무런 문제없이 몇 년 동안 표준 Python 빌드를 사용하여 서비스를 사용 해왔다. 그래서 나는 그것이 또한 당신을 위해 일할 것이라고 믿을만한 충분한 이유가 있습니다.

ActiveState를 사용하여 문제를 해결하려면 버그가 LoadPythonServiceInstance 함수의 PythonService.cpp 빌드에있는 것처럼 보입니다. 내가 만든 레지스트리 항목을 살펴 보았다. 클래스를로드 할 때 PythonService.exe가 실패했다. 오류 메시지를 기반으로 모듈을 올바르게로드 한 것으로 보이며 클래스를 찾는 데 문제가 있습니다.

+0

Windows 서비스 내에서 multiprocessing.Manager()를 사용할 수 있는지 알려주시겠습니까? 다중 처리 작업에 관련된 여러 가지 문제가 있습니다. –

+0

가능해야하지만 다중 처리 기능이있는 창에서는 개인적인 경험이 없습니다. 우리가 (지역 사회가) 도울 수있는 목표를 달성하기 위해 노력하고있는 세부 사항으로 새로운 질문을한다면 확실합니다. – JimP

관련 문제