Force CherryPy Child Threads
cherrypy, multithreading, python
Solution
You need to write code that stops your threads, and register it as a listener for the 'stop' event:
from cherrypy.process import plugins
class MyFeature(plugins.SimplePlugin):
"""A feature that does something."""
def start(self):
self.bus.log("Starting my feature")
self.threads = mylib.start_new_threads()
def stop(self):
self.bus.log("Stopping my feature.")
for t in self.threads:
mylib.stop_thread(t)
t.join()
my_feature = MyFeature(cherrypy.engine)
my_feature.subscribe()
See http://www.cherrypy.org/wiki/BuiltinPlugins and http://www.cherrypy.org/wiki/CustomPlugins for more details.
Problem
Well, I want cherrypy to kill all child threads on auto-reload instead of "Waiting for child threads to terminate" because my program has threads of its own and I don't know how to get past this. CherryPy keeps hanging on that one line and I don't know what to do to get the 'child threads' to terminate... ` ``` [05/Jan/2010:01:14:24] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('127.0.0.1', 8080)) shut down [05/Jan/2010:01:14:24] ENGINE Stopped thread '_TimeoutMonitor'. [05/Jan/2010:01:14:24] ENGINE Bus STOPPED [05/Jan/2010:01:14:24] ENGINE Bus EXITING [05/Jan/2010:01:14:24] ENGINE Bus EXITED [05/Jan/2010:01:14:05] ENGINE Waiting for child threads to terminate... ``` ` it never continues.. So i want to force the child threads to close ... I know it is because my application is using threads of its own and I guess cherrypy wants those threads to quit along with CherryPy's.... Can I overcome this ?