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 ?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With