Subject: AW: [python-win32] Geting values from a thread

Gabriel Genellina gagenellina at softlab.com.ar
Tue Jan 11 23:53:20 CET 2005


At 11/1/2005 08:01, you wrote:


>         while True:
>             retval=win32event.WaitForMultipleObjects
>(self.close_evt,self.accept_evt),False,win32event.INFINITE)
>             if retval == win32event.WAIT_OBJECT_0:
>                 win32file.CloseHandle(self.accept_evt)
>                 self.socket.close()
>                 servicemanager.LogMsg(
>                 servicemanager.EVENTLOG_INFORMATION_TYPE,
>                 servicemanager.PYS_SERVICE_STOPPED,
>                 (self._svc_name_, ''))
>                 return
>
>             elif retval == win32event.WAIT_OBJECT_0 + 1:
>
>                 thread.start_new_thread(self.FetchData,(self.socket,))
>
>
>def FetchData(self,socket):
>         ##code
>       import servicemanager
>       message= 'Processed %d bytes for client connection and printed out 
> on port
>%s' % (value1,value2) ##value 1,2 set inside the FetchData code
>       servicemanager.LogInfoMsg(message)
>
>
>If the service runs in debug mode, the message is written to the console. 
>If the
>service runs normal (with 'start' parameter) no message send to the 
>eventlog (no
>error message, no exit code, nothing happens). If I put the message line 
>and the
>LogInfoMsg line under thread.start_new_thread the message is send to the
>eventlog, but I cannot pass the two values of the FetchData function.
>That's the whole problem. Don't know how to solve :-(

If you really need another thread to process FetchData, you could use a 
Queue to pass data between threads.
But, for a server accepting multiple simultaneous connections the asyncore 
module may be a better solution than multiple threads.




More information about the Python-win32 mailing list