Django - gunicorn - 应用程序级别变量(在工作人员之间共享)

Dav*_*lla 5 django variables global worker

所以我有一个玩具django + gunicorn项目.我想要一个统计模型,这个模型只在内存中加载一次,然后在工作者/线程中重用它.

我如何/在哪里定义应用程序级别变量?我尝试将它放在settings.py上,也放在wsgi.py上

Tin*_*ino 4

我认为你不能(也不应该)。Worker 是独立的进程,在运行您的任何代码之前进行分叉。

您可以将“模型”(是什么使它变大?)放入 Redis DB 中,并从那里在每个工作线程中访问它。最好的选择可能是创建一个单独的服务,您运行一个实例,并通过 HTTP 或 RPC 从您的工作线程进行通信(查看nameko以获得简单的(微)服务框架。

另一种选择是使用单个 Celery Worker,并在任务中进行统计计算。