【问题标题】:Access variables without re-loading them between management commands in Django访问变量而无需在 Django 的管理命令之间重新加载它们
【发布时间】:2020-03-29 07:47:07
【问题描述】:

我们正在构建一个支持 AI 的 Web 应用程序,该应用程序使用巨大的内存模型,理想情况下,这些模型应该只在内存中作为全局变量加载一次。

这些变量将由不同的管理命令使用,这些命令作为单独的进程运行并利用 Django 框架。当然,runserver 命令也可以访问这些全局变量。

这些模型加载在单个模块 commons 中,但由于我们生成不同的进程,所以我们现在假设两个 - runserverprocess_tasks,这些模型本质上是通过 commons 模块在内存中加载两次。

有没有办法集中加载这些模型并在独立产生的进程之间共享变量。我知道 python 和 Manager API 中的多处理模块,但无法找到将其与当前场景结合的方法。

有没有办法运行一个独立的 python 进程来保存这些变量并能够从多个其他进程访问它们?

【问题讨论】:

标签: python django shared-memory


【解决方案1】:

我知道对此没有“适当”的解决方案。在将这些模型加载到 \schema.py 中后,我使用了一种粗略的编写临时文件的方法,然后将对象模型导入到我的“business_logic.py”中,检查文件是否存在,然后不要再次初始化模型。 希望对其他人有所帮助。

【讨论】:

  • 没错,没有合适的解决方案。我最终得到了一个使用 Celery 和 Redis 代理的分布式架构。模型现在加载到 Celery 工作人员中,所有推理/预测都作为 Celery 任务运行,这似乎是一个很好的设计模式。我的 Web 服务器现在单独运行,我正在对堆栈进行 dockerising。
猜你喜欢
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
相关资源
最近更新 更多