BaseHTTPServer get_request not called till first request
Adam Tauno Williams
awilliam at opengroupware.us
Sun Jan 17 08:04:23 EST 2010
On Sat, 2010-01-16 at 18:35 -0800, yousay wrote:
> 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.
> your class Name is the same to the superClass,may be have influence
Nope, changed the name of the class (cleaned out all the *.pyc files),
and the initial wait still does not time out.
More information about the Python-list
mailing list