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" <a.nandago...@traxens.com> 
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

Reply via email to