Log message for revision 69833: applied patches for 'fast_listen' directive..some more work to do: - wording - hard-coded listen(1024) call - tests?
Changed: U Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/HTTPServer.py U Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/component.xml U Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/datatypes.py U Zope/branches/ajung-fast-listen-branch/lib/python/Zope2/Startup/__init__.py -=- Modified: Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/HTTPServer.py =================================================================== --- Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/HTTPServer.py 2006-08-29 09:34:43 UTC (rev 69832) +++ Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/HTTPServer.py 2006-08-29 12:04:49 UTC (rev 69833) @@ -428,8 +428,10 @@ channel_class = zhttp_channel shutup=0 - def __init__ (self, ip, port, resolver=None, logger_object=None): + def __init__ (self, ip, port, resolver=None, logger_object=None, + fast_listen=True): self.shutup=1 + self.fast_listen = fast_listen http_server.__init__(self, ip, port, resolver, logger_object) self.shutup=0 self.log_info('%s server started at %s\n' @@ -460,8 +462,13 @@ def listen(self, num): # override asyncore limits for nt's listen queue size - self.accepting = 1 - return self.socket.listen (num) + if self.fast_listen: + self.accepting = 1 + return self.socket.listen (num) + else: + return 0 + + class zwebdav_server(zhttp_server): server_protocol = 'WebDAV' Modified: Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/component.xml =================================================================== --- Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/component.xml 2006-08-29 09:34:43 UTC (rev 69832) +++ Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/component.xml 2006-08-29 12:04:49 UTC (rev 69833) @@ -19,6 +19,12 @@ receive WebDAV source responses to GET requests. </description> </key> + <key name="fast_listen" datatype="boolean" default="on"> + <description> + Defines wether the http server should listen to requests immediatelly + or only after zope is ready to run + </description> + </key> <key name="use-wsgi" datatype="boolean" default="off" /> </sectiontype> Modified: Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/datatypes.py =================================================================== --- Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/datatypes.py 2006-08-29 09:34:43 UTC (rev 69832) +++ Zope/branches/ajung-fast-listen-branch/lib/python/ZServer/datatypes.py 2006-08-29 12:04:49 UTC (rev 69833) @@ -70,6 +70,7 @@ self.force_connection_close = section.force_connection_close # webdav-source-server sections won't have webdav_source_clients: webdav_clients = getattr(section, "webdav_source_clients", None) + self.fast_listen = getattr(section, 'fast_listen') self.webdav_source_clients = webdav_clients self.use_wsgi = section.use_wsgi @@ -81,6 +82,7 @@ handler.set_webdav_source_clients(self.webdav_source_clients) server = self.server_class(ip=self.ip, port=self.port, resolver=self.dnsresolver, + fast_listen=self.fast_listen, logger_object=access_logger) server.install_handler(handler) return server Modified: Zope/branches/ajung-fast-listen-branch/lib/python/Zope2/Startup/__init__.py =================================================================== --- Zope/branches/ajung-fast-listen-branch/lib/python/Zope2/Startup/__init__.py 2006-08-29 09:34:43 UTC (rev 69832) +++ Zope/branches/ajung-fast-listen-branch/lib/python/Zope2/Startup/__init__.py 2006-08-29 12:04:49 UTC (rev 69833) @@ -100,6 +100,7 @@ self.makePidFile() self.setupInterpreter() self.startZope() + self.serverListen() from App.config import getConfiguration config = getConfiguration() if not config.twisted_servers: @@ -211,6 +212,23 @@ ZServer.setNumberOfThreads(self.cfg.zserver_threads) ZServer.CONNECTION_LIMIT = self.cfg.max_listen_sockets + + def serverListen(self): + + + servers = [] + for server in self.cfg.servers: + if hasattr(server, 'fast_listen'): + # This one has the delayed listening feature + if not server.fast_listen: + server.fast_listen = True + # ATT: should that be a config option? (aj) + server.listen( 1024 ) + else: + return + + + def setupServers(self): socket_err = ( 'There was a problem starting a server of type "%s". ' _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins