Как использовать объект pickle sklearn, созданный в первом запросе, во всех других запросах

У меня есть следующий вариант использования В моем проекте — Python. У нас есть система прогнозирования для каждого пользовательского запроса через API (мы используем IIS, нужно посмотреть на возможности flask).

Размер файла pickle огромен, около 700 МБ, я не хочу загружать его для каждого запроса (поскольку он потребляет больше оперативной памяти для каждого запроса).

Можем ли мы загрузить файл рассола в кэш фляги и использовать его для всех запросов? (или) Можем ли мы разделить данные между всеми запросами, чтобы нам не нужно было загружать их снова и снова?

Пожалуйста, помогите с примером реализации совместного использования данных pickle по всем запросам.


person u1234    schedule 04.05.2018    source источник


Ответы (1)


Вы можете попробовать использовать что-то вроде Flask-Cache и выполнить такую ​​функцию:

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

Таким образом, объект pickle будет импортирован только при первом вызове этой функции, а затем будет удален из кеша.

Вы также можете вызвать это один раз во время инициализации приложения, чтобы оно уже было загружено для первого запроса.

Затем каждый раз, когда вам нужен объект, используйте get_pickle_object() вместо самого объекта.

person AArias    schedule 04.05.2018
comment
Мы выбрали службу FastCGI (один длительный процесс для всех запросов) на сервере Microsoft IIS. Также реализован шаблон проектирования singleton для создания объекта pickle только один раз. - person u1234; 11.05.2018