1

我有一个多租户应用程序,每个租户/客户端都有一个压缩包,其中包含每个租户/客户端的公共站点的模板和处理程序。现在我有不到 50 个租户,并且在第一次请求特定客户端域后将导入的应用程序保留在内存中是很好的。

这种方法效果很好,但是每次我进行更改和/或添加新客户端时,我都必须使用新客户端压缩包重新部署应用程序。

现在我正在努力使通过网络上传上传这些包并将它们存储到 blobstore 成为可能。

我现在担心的是:

  • 从 blobstore 获取包当然比在文件系统中导入压缩包要慢。但这不是最大的问题。

  • 如何加载/导入不在文件系统中且没有路径的模块?

  • 如果每个客户包都在 1mb 左右,只要客户群低,这不是问题,但如果它增加到 1k 甚至更多怎么办?显然我没有足够的内存在内存中存储几 GB 的数据。处理这个问题的最佳方法是什么?

  • 如果我使用实例内存将以前的租户包存储在内存中,如果有新上传的包,如何使内存中的数据无效?

我会很感激一些关于如何处理这种情况的想法。

4

1 回答 1

1

我同意尼克的观点。租户特定的 zip 中应该没有 python 代码。为了解决内存问题,我将缓存数据存储中的大部分页面。要为他们提供服务,您不需要在您的实例中加载所有租户。您可能还想在保存时而不是在请求时查看预生成的 html 视图。

于 2012-10-29T16:46:15.010 回答