【发布时间】:2020-03-05 17:11:56
【问题描述】:
我有一个在 docker 容器中运行的 python 应用程序。在我的应用程序中,我正在缓存一些对象,因为它们的创建时间太大而无法在每次使用它们时创建它们。我现在想生成相同图像的多个容器来处理可能的负载。该应用程序实际上是一个提供 API 的网络服务器。但是,每个容器的缓存对象都是相同的,所以我在想是否可能有一些 docker IPC 或任何允许我存储和使用这些对象的相同实例的功能,所以我没有任何开销内存中相同对象的副本。有什么方法可以实现吗?
【问题讨论】:
-
如果你在进程 fork 之前创建对象,它们将在内存中获得对象的副本。为什么您的对象创建缓慢?根据您的代码,最好只缓存对象创建的缓慢部分而不是整个对象本身。这将为您提供更多关于如何存储缓存的选项。
-
对象创建速度很慢,因为这些对象是机器学习模型,其中每个对象可能高达几百兆字节。创建也需要按需进行,因为我不一定需要所有可能的对象。
-
也许你可以腌制对象并存储在 memcached 中
-
Docker 在这里不会直接帮助您,但它确实可以让您轻松地与其他容器一起运行专用缓存服务器(Redis、Memcached)。
-
Python 3.8 中有一些新的东西可能适合我的需要:link 我会尝试设置一个原型,看看它是如何工作的。
标签: python docker ipc shared-memory