Re: win32 Service: path to .py script
- From: Larry Bates <larry.bates@xxxxxxxxxxx>
- Date: Tue, 19 Sep 2006 10:22:23 -0500
Gregor Horvath wrote:
Hi,I believe that your problem is that services run under Local
I have a testservice.py (see below). I installed the Windows-Service
successfully. (via commandlineoption install)
The problem is that it runs only when it is in c:\windows\system32 or in
the python path.
I added the desired path (Y:\) to the PYTHONPATH environment variable
for the system account and rebooted.
When I start command line python and do a import testservice everything
is fine.
Starting the service with the script only in Y:\ gives the error in the
event log:
Python could not import the service's module
exceptions.ImportError: No module named testservice
Thanks for your help.
--
Greg
testservice.py:
import win32serviceutil, win32service
import servicemanager
import win32api
import win32event
import sys
class TestPipeService(win32serviceutil.ServiceFramework):
_svc_name_ = "MDE Dispatcher"
_svc_display_name_ = "MDE-Dispatcher"
_svc_description_ = "Dispatches machine events from the Siemens ODC
to registrered MDE clients (windows) over the network via XML-RPC"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
# Write an event log record - in debug mode we will also
# see this message printed.
servicemanager.LogMsg(
servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_, '')
)
while 1:
win32api.Sleep(2)
rc = win32event.WaitForSingleObject(self.hWaitStop, 2000)
if rc == win32event.WAIT_OBJECT_0:
break
# Write another event log record.
servicemanager.LogMsg(
servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STOPPED,
(self._svc_name_, " TEST ")
)
if __name__=='__main__':
win32serviceutil.HandleCommandLine(TestPipeService)
System account. Normally Local System account would not have
a drive mapping Y:\. You can change the account that a service
runs under in the Service Manager-Log On tab. Normally you
wouldn't run services from mapped drives, they would be
installed on local machine and started from there. If services
need to access mapped drives, you need to put full UNC
pathnames to access them or run the services under an account
that has the drives mapped properly.
-Larry Bates
.
- Follow-Ups:
- Re: win32 Service: path to .py script
- From: Gregor Horvath
- Re: win32 Service: path to .py script
- References:
- win32 Service: path to .py script
- From: Gregor Horvath
- win32 Service: path to .py script
- Prev by Date: Re: why a main() function?
- Next by Date: Re: Compile AST to bytecode?
- Previous by thread: win32 Service: path to .py script
- Next by thread: Re: win32 Service: path to .py script
- Index(es):
Relevant Pages
|