De : Gmail [mailto:mrje...@gmail.com]
Envoyé : Wednesday, September 24, 2014 2:41 PM
À : Arulnambi Nandagoban
Objet : Re: Python as Windows Service
Also, this may work for you
<http://nssm.cc/description>
<http://nssm.cc/usage>
NSSM installs an existing app as a service.
/Jean
On Sep 24, 2014, at 3:16 AM, "Arulnambi Nandagoban"
wrote:
De : MrJean1 [mailto:mrje...@gmail.com]
Envoyé : Tuesday, September 23, 2014 5:55 PM
À : a.nandago...@traxens.com
Objet : Python as Windows Service
Here's one, simple example
<http://stackoverflow.com/questions/32404/is-it-possible-to-run-a-python-script-as-a-service-in-windows-if-possible-how>
There are more, just search for "Python Windows Service" for example.
/Jean
Thank you !!!
--
Nambi
Thank you again !!!
I managed to run the server as as service with help of sample code provided in
<http://stackoverflow.com/questions/32404/is-it-possible-to-run-a-python-script-as-a-service-in-windows-if-possible-how
.
I found some problem in stopping the service. I feel it because of
socket.accept() which blocks. This the class where I implemented the server in
the main method.
class TraxServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "Testserver"
_svc_display_name_ = "Pytestserver"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop =
win32event.CreateEvent(None,0,0,None)
self.sloop = True
self.serversock = 0
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
self.sloop = False
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED, (self._svc_name_,''))
self.main()
def main(self):
self.serversock = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
self.serversock.bind(server_config())
self.serversock.listen(5)
while
(win32event.WaitForSingleObject(self.hWaitStop, 0) == 258):
try:
clientsock,
addr = self.serversock.accept()
Pysconfig.logger.info('...connected from: %s', addr) # logging
thread.start_new_thread(handler, (clientsock, addr))
Pysconfig.logger.info('Thread ID: %s', thread.get_ident()) # logging
except socket.error, msg:
Pysconfig.logger.info('Failed to create socket. Error code: ' + str(msg[0]) + '
, Error message : ' + msg[1])
pass
self.serversock.shutdown(socket.SHUT_RDWR)
self.serversock.close()
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STOPPED, (self._svc_name_,''))
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(TraxServerSvc)
When win32event.WaitForSingleObject(self.hWaitStop, 0) method returns zero , I
need to quit the while loop to stop the service. But in the above case, since
it blocks in accept , I need to make connection from client to completely stop
service.
--
nambi
--
https://mail.python.org/mailman/listinfo/python-list