Я создаю веб-службу на основе python, которая обеспечивает поддержку обработки естественного языка в нашем основном API приложения. Так как это тяжелая НЛП, для этого требуется разбить несколько очень больших (50-300 МБ) файлов корпуса с диска, прежде чем он сможет делать какие-либо анализы.Кэширование больших объектов в python Флажок/веб-служба Gevent
Как загрузить эти файлы в память, чтобы они были доступны для каждого запроса? Я экспериментировал с memcached и redis, но они, похоже, предназначены для гораздо меньших объектов. Я также пытаюсь использовать объект Flask g
, но это сохраняется только в течение одного запроса.
Есть ли способ сделать это при использовании сервера gevent (или другого) для разрешения параллельных соединений? Корпусы полностью доступны только для чтения, поэтому должен быть безопасный способ выставить память на несколько зеленых/потоков/процессов.
Большое спасибо и извините, если это глупый вопрос - я давно работал с python, но я относительно новичок в веб-программировании.
ИМО Вы должны использовать другой формат хранения, чем рассол. Как насчет ... базы данных? –
@MarkusUnterwaditzer yep, я закончил тем, что пошел с redis. Трудность с НЛП заключается в том, что для большинства задач вам нужен весь корпус, загруженный в память, как правило, в какой-то специализированной структуре данных. Если вам нужен только корпус для конкретной задачи, иногда можно обойти это (как я и делал), но я не знаю ни одного хранилища данных, которое бы поддерживало общий случай. – sbrother