如何在第一个请求中使用sklearn pickle对象跨所有其他请求

时间:2018-05-04 13:11:47

标签: python python-3.x flask flask-restful urllib3

我在我的项目中有以下用例 - Python。 我们通过API为每个用户请求建立了一个预测系统(我们正在使用IIS,需要查看烧瓶功能)。

pickle文件的大小很大,比如700MB,我不想为每个请求加载它(因为它为每个请求消耗了更多的RAM)。

我们可以将pickle文件加载到flask缓存中并将其用于所有请求吗?   (要么) 我们可以在所有请求中共享数据,以便我们不需要一次又一次地加载它吗?

请帮助您在所有请求中共享pickle数据的示例实现

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Flask-Cache之类的内容,并执行以下功能:

@cache.cached(timeout=None)
def get_pickle_object():
    return your_pickle_object

这样,只有在第一次调用此函数时才会导入pickle对象,之后它将从缓存中转储。

您还可以在应用初始化期间调用一次,以便第一次请求时已加载它。

然后,每当您需要该对象时,请使用get_pickle_object()而不是对象本身。