gpt4 book ai didi

python - 如何使用 Django 在请求之间保留数据

转载 作者:行者123 更新时间:2023-12-03 20:19:29 25 4
gpt4 key购买 nike

我有一个在 Kubernetes 集群中运行的 Django 应用程序,我想为它实现一个预停止 Hook 。这里的想法是,无论何时调用 prestop 钩子(Hook),pod/容器都将无法通过就绪探测检查,因此它在被集群关闭之前不会收到任何新请求。在这种情况下,就绪探测器和预停止 Hook 都是我应用程序中的 api 端点:/readiness 和/prestop。

此外,为了使就绪探测失败,我必须在每次调用/readiness 时返回一个高于 400 的代码。

所以我的问题是,在调用 prestop Hook 后,我如何存储一个状态,表明我应该在就绪探测器中返回 400?请注意,我应该只为调用 prestop Hook 的 pod 返回 400,其他 pod/容器应该继续正常运行。所以我正在寻找一种方法来跟踪单个 pod/容器的状态。

我做了一个非常愚蠢的测试,看看我是否可以在请求之间保持计数器的状态:

class ReadinessProbeView(View):
def __init__(self):
self.count = 0

def get(self, request):
result = {}

self.count = self.count + 1
result["healthy"] = True
result["count"] = self.count
return JsonResponse(result, status=200)

但是,无论我调用此函数多少次,count = 1,所以在请求之间不会维护状态。

最佳答案

对此有很多不同的解决方案。根据您的数据大小,您可以将数据存储在 session 对象、应用程序对象中,甚至可以打开一个小型数据库,如 sqlite 或内存结构,例如像这些人一样的 redis:

Django: how to store a lot of data between requests if I don't have a database

这是访问 session 数据的入门指南:

https://docs.djangoproject.com/en/3.0/topics/http/sessions/

关于python - 如何使用 Django 在请求之间保留数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60537119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com