gpt4 book ai didi

python - 如何与另一个 Python 应用程序共享 Django 数据库?

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:42 25 4
gpt4 key购买 nike

在辅助应用程序中导入 Django 应用程序的模型并查询数据库是一个好习惯吗?它是否有任何性能问题或其他问题?实际上第二个应用程序是一个简单的轻量级 Websocket 服务器。

最佳答案

我已经回答了,尽管这可能在 Programmers SE. 上提供更好的服务

Tl;dr:不,这不是一个好的做法,但它并不一定会导致性能问题。但它确实让一切变得更加复杂。如果可以的话避免它。我有一个可以执行此操作的系统,并且我正在尝试摆脱此设置。

首先,正如 Apero 在评论中所说:

Django models can only be used by a Django app. Your websocket service is most probably not written in Django so you won't be able to use these models

但我可以提供一些相关背景和实用性:

拥有多个系统或应用不一定会导致性能问题,就像拥有多个应用实例一样,但要遵守以下注意事项。

您的主要问题是系统是否可以打开和维护连接和查询,以及您是否有任何特别长时间运行或密集的查询,以及这些不同系统之间的重叠方式。您能轻松看到这一点吗?

我们有一个中型遗留系统 CRM 数据库(250 个用户,全天平均 3 页/秒,大约 30Gb 数据,MySQL),它具有:

  • 8 名网络 worker
  • Django 框架中的 30 多个 cronjobs 访问数据库的管理命令(因此创建自己的数据库连接),有些频率为每分钟一次。
  • 4 或 5 个“独立”系统(包括超集等的报告工具,再次创建自己的连接。

我们在 Amazon Web Services 上的 T2 Micro 实例上运行所有这些。它从来不会真正受到特别的负担,除非我们运行大规模批处理作业(将 250k 条记录插入我们的 110m 行分析表,该表设计不佳且索引不正确,但那是另一个故事)。这会在一夜之间运行,因为它往往会减慢一切。

但是您询问了最佳实践

This answer is a good overview of some of the pitfalls

在我上面描述的示例中,我们有许多数据库在更新方面重叠的区域。这很糟糕,并且使得调试所发生的事情变得困难。是财务系统还是 CRM 改变了该记录?

总的来说,其他(非 CRM)应用程序正在运行报告系统 - 因此只需 SELECT 语句即可。考虑到这一点,当我到达时,第一件事就是为报告系统建立一个只读副本,并将其转移到该系统上。现在,即使有人在我们最大的表中运行文本关键字搜索,也不会影响主 CRM 系统在更新客户记录和其他 INSERTUPDATE 方面的性能> 查询。

关于python - 如何与另一个 Python 应用程序共享 Django 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706316/

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