В настоящее время я разрабатываю систему для анализа и визуализации текстовых данных на основе НЛП.Очередь сообщений с сельдереем против обработки задач AWS Lambda
Бэкэнд (Python + Колба + AWS EC2) обрабатывает анализ и использует API для подачи результата обратно в веб-интерфейс (КОЛБУ + D3 + Heroku) приложения, которое только обрабатывает интерактивные визуализации.
В настоящий момент анализ в прототипе представляет собой базовую функцию python, которая означает, что на больших файлах анализ занимает больше времени и, таким образом, приводит к таймауту запроса во время соединения данных API с интерфейсом. Как и анализ многих файлов, выполняется в линейной очереди блокировки.
Чтобы масштабировать этот прототип, мне нужно изменить функцию Analysis(text)
, чтобы быть фоновой задачей, чтобы она не блокировала дальнейшее выполнение и не могла выполнить обратный вызов после выполнения функции. Текст ввода извлекается из AWS S3, а выход - относительно большой формат JSON, предназначенный для хранения в AWS S3, поэтому API-интерфейс будет просто извлекать этот JSON, который содержит данные для всех графиков в интерфейсном приложении. (Я считаю, что S3 немного легче обрабатывать, чем создание большой структуры реляционной базы данных для хранения постоянных данных.)
Я делаю простые примеры с сельдереем и считаю это подходящим решением, однако я просто немного читал в AWS Лямбда, которая на бумаге кажется лучшим решением с точки зрения масштабирования ...
Функция Analysis(text)
использует предварительно построенную модель и выполняет функции относительно распространенных пакетов Python NLP. Поскольку мой недостаток опыта в масштабировании прототипа я хотел бы попросить о вашем опыте и суждении о том, какое решение будет наиболее подходящим для этого сценария.
Спасибо :)