Apache WSGI IPC

问题描述 投票:0回答:1

我有一个 Django 应用程序在具有多个进程的 Apache/ModWSGI 服务器后面运行。

我想实现一项功能,其中设置(例如模型字段标签)存储在数据库中并在 UI 中动态更新。

为了避免减慢每个 Django 请求的速度,我不想在每个请求中从数据库中提取所有模型字段名称。我只想首先从 Django 实例加载中提取它们,然后在它们发生更改时更新它们一次。

创建一个 Django 信号来连接我的字段名称模型,并动态更新内存中字段的“详细名称”值是非常简单的。但是,这只会更新该请求的流程。 Apache 运行的其他 N-1 个进程仍将使用旧值。

我如何告诉其他进程更新特定设置?

理想情况下,我想要一种非常轻量级的进程间通信方法,将“字段名称更改”事件推送到其他进程,然后它们将使用该事件并执行更新内存中的值的轻量级任务。

Python 有很多多处理工具,但是有没有专门针对这样的任务的多处理工具,尤其是 Django+Apache?

我很难相信没有人曾经需要让他们的 ModWSGI 进程相互通信,但是当我搜索 Django/Python IPC 工具时,我要么得到标准多处理包的教程,要么得到像 Celery 这样的消息消费服务,这并不完全是我想要的。

我可以使用 WSGIHandler 中的自定义线程自己烘焙一些东西,该线程从共享队列中读取/写入,但我不想重新发明轮子。

python django multiprocessing ipc
1个回答
1
投票

我们在 github.com/digitalfabrik/integrea-cms 上也有同样的问题。我们需要跨不同进程的互斥锁。我们的方法是将 Django 缓存与 Redis 后端结合使用。虽然不如原生 Python MP 功能,但它是一种有效的方法。

欢迎更好的想法。

© www.soinside.com 2019 - 2024. All rights reserved.