Django只加载一次对象实例,让它们可用于启动app

tuf*_*fla 5 python django

我有一个应用程序(Django 1.6),它使用大约4000个对象,用于以前生成的自然语言处理(NLP).

所有应用程序进程(请求,测试,自定义管理命令等)都需要以某种方式使用所有这些对象.

我想做的是在启动时(或左右)加载所有这些对象,并将它们存储在内存中,以使它们可用于所有应用程序进程.

这篇文章有一些线索,但我很想听听你对这种情况的最佳方法的看法.

澄清:4000个对象仅用于在所有进程中读取,它们不会以任何方式被修改到​​应用程序中.

非常感谢.

Yuv*_*dam 0

在这种情况下,最好的想法可能是专门针对这些东西启动一个专用流程。任何其他方式都不能保证您的对象在部署集群中是单一的。

如果您使用单独的进程工作人员进行部署,您将拥有 NLP 数据的多个不同副本(每个进程一个),并且如果您使用协作线程进行部署(例如使用gunicorn gevent工作人员时),那么您必须确保您的代码是线程安全的。

我会将其设置为在专用进程上运行的外部服务,并让每个客户端使用您选择的进程内通信(套接字、HTTP 等)来访问该服务。

为了本地开发、测试目的和易于部署,您始终可以将这些对象加载到项目设置中。