5

我有一个从 BaseHTTPRequestHandler 派生的 HTTP 处理程序

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

我遇到的问题是我想报告我的应用程序在另一个线程中运行的状态。似乎对于每个请求,都会调用一个新的处理程序实例,因此我无法将程序状态保留在 MyHandler 中。我可以在全球范围内存储状态,但出于设计原因,我不想这样做。还有其他选择吗?

4

1 回答 1

2

您可以使用多处理模块来完成此操作。首先派生一个服务器类:

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 回答