10

私のプログラムには独自のスレッドがあり、これを乗り越える方法がわからないため、「子スレッドが終了するのを待つ」のではなく、自動リロード時にcherrypyにすべての子スレッドを強制終了させたいと思います。CherryPy はその 1 行にハングアップし続け、「子スレッド」を終了させるために何をすべきかわかりません...

`

[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...

`

それは決して続かない..だから私は子スレッドを強制的に閉じたい...

私のアプリケーションが独自のスレッドを使用しているためだと私は知っています.cherrypyはそれらのスレッドをCherryPyのものと一緒に終了させたいと思っています....これを克服できますか?

4

2 に答える 2

14

スレッドを停止するコードを記述し、それを「stop」イベントのリスナーとして登録する必要があります。

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()

詳細については、http ://www.cherrypy.org/wiki/BuiltinPluginsおよびhttp://www.cherrypy.org/wiki/CustomPluginsを参照してください。

于 2010-01-05T16:48:50.737 に答える