5

BaseHTTPRequestHandler から派生した HTTP ハンドラーがあります。

class MyHandler(BaseHTTPRequestHandler):
    do_GET():
        ...

私が抱えていた問題は、別のスレッドで実行されているアプリケーションの状態を報告したいということです。リクエストごとにハンドラーの新しいインスタンスが呼び出されるように見えるため、プログラムの状態を MyHandler に保持できません。状態をグローバルに保存できますが、設計上の理由から、そうしたくありません。他のオプションはありますか?

4

1 に答える 1

2

multiprocessing モジュールを使用してこれを実現できます。最初にサーバー クラスを派生させます。

class MyTCPServer(SocketServer.ForkingTCPServer):
    manager = multiprocessing.Manager()
    SHARED = manager.dict()

次に、ハンドラーの do_GET で次のようなことができます。

self.server.SHARED['foo'] = 1

これは、do_GET の他のインスタンスによって参照可能になるはずです。

于 2014-03-23T00:43:06.753 に答える