BaseHTTPServer get_request not called till first request

yousay qq263020776 at gmail.com
Sun Jan 17 03:35:21 CET 2010


On Jan 13, 1:38 am, Adam Tauno Williams <awill... at opengroupware.us>
wrote:
> Looking at <http://code.activestate.com/recipes/425210/> and
> <http://code.activestate.com/recipes/499376/> as examples I've attempted
> to create a BaseHTTPServer class that times-out accept() ever X seconds
> to check some other work.  This seems to work well, but only once the
> HTTPServer object has received its first request.  Up until the first
> request get_request() is not invoked and not timeout occurs.
>
> class HTTPServer(BaseHTTPServer.HTTPServer):
>
>     def server_bind(self):
>         BaseHTTPServer.HTTPServer.server_bind(self)
>         self.socket.settimeout(1)
>         self._shutdown = False
>
>     def get_request(self):
>         while not self._shutdown:
>             try:
>                 print ' HTTP worker {0} waiting.'.format(self.pid)
>                 self.log.debug('Waiting for connection...')
>                 s, a = self.socket.accept()
>                 s.settimeout(None)
>                 return (s, a)
>             except socket.timeout:
>                 /// do other work ///
>         return None, None
>
> The "HTTP worker" message is not seen until the server has taken a
> request, then it seems to dutifully do the timeout.
>
> --
> OpenGroupware developer: awill... at whitemice.org
> <http://whitemiceconsulting.blogspot.com/>
> OpenGroupare & Cyrus IMAPd documenation @
> <http://docs.opengroupware.org/Members/whitemice/wmogag/file_view>

your class Name is the same to the superClass,may be have influence



More information about the Python-list mailing list