当使用Djangorestframework rend时,类变量被缓存在下一个请求中

2024-06-24 13:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用uwsgi、django和django rest框架开发了一个应用程序。你知道吗

我在renderer类中引入了一个类变量,这个变量将作为响应的一部分进行填充。你知道吗

问题似乎如下:

class xxxRenderer(xxxBase)
    response_pb_msg = obj # it's one instance of protobuf message 

    def render():
        if True:
            self.response_pb_msg.items = []
        else:
            self.response_pb_msg.retCode = 100
            self.response_pb_msg.otherXXXX = xxxx

在django logger处理程序中,我再次访问这个类变量,如下所示:

xxxRenderer.response_pb_msg.ParseFromString(body)

在第一个响应之后,这个类变量'response\u pb\u msg'只有一个属性“retCode”

但是在第二个响应中,它有三个属性“retCode”、“otherXXXX”和“items”

奇怪的是,第二个响应包含了第一个响应中存在的所有内容。你知道吗

过了一段时间,我重新写了这节课如下:

class xxxBaserender(xxRender)
    def __init__():
        if self.response_pb_msg_cls is not None and isinstance(self.response_pb_msg_cls, GeneratedProtocolMessageType):
            self.response_pb_message = self.response_pb_msg_cls()

class xxxRenderer(xxxBaserender)
    response_pb_msg_cls = msgName # the class of protobuf message 

理论上讲,第二节课是可以的。我做了测试,没有重复那个问题。你知道吗

让我们回到我们开始的地方 每一个请求完成,所有资源都应该是干净的。 但我对这个问题非常困惑,似乎类变量在uwsgi进程中没有在响应返回后被释放。你知道吗

我读了“政治公众人物3333”,没有得到任何有价值的信息。 我想我还没有完全理解python中的类变量、wsgi和web处理流。你知道吗

有人能帮我理解这个问题吗?你知道吗

非常感谢。你知道吗


Tags: ofdjangoselfmessageifresponsedefmsg