> Have you looked into what happens if a site's max_children value is > set to 0? > I think that will cause the qp web server process itself to not > fork subprocesses > at all. If your Publisher can launch the rest of your application, > you might have the process-related behavior that you want. I did check max_children=0. That results in a nice monolithic process but HubServer.run is not compatible with Twisted like the workers are not. With Twisted, unless you resort to threads, all blocking I/O (like the select() call) must be managed via the Twisted reactor (in this case, using reactor.listenTCP) or no Twisted activities will function. Yes, I could launch the rest of my application via Publisher.run_web in the new subprocess. However, this server process is a well tested Unix daemon that has existing daemonization and logging capabilities and is managed via /etc/init.d. I don't want to change any of that nor have QP fiddle with the environment that code establishes. I guess I'm trying to find/create a mode of using QP where it can behave more like a library than a standalone application while making as few changes to QP as possible. I know I wouldn't be running into this if I were to use just Quixote, but I really like QP and what it offers. For now I will take an expedient way out: 1) use the Site.get_sites hack 2) use SitePublisher.run_web to start Twisted 3) create an EmbeddedSite subclass of Site and reimplement just a few critical things to permit embedding with a goal of cleaning it up and integrating it better with a future QP release. Dave