使用python的BaseHTTPRequestHandler在HTTP请求之间保持状态

时间:2013-07-19 00:47:06

标签: python http

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

然后在你的处理程序的do_GET中你可以做类似的事情:

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

然后应该由do_GET的其他实例引用。