Есть ли способ загрузить корпус TextBlob в Google Cloud Run?

Я использую Python с TextBlob для анализа настроений. Я хочу развернуть свое приложение (построить в Plotly Dash) в Google Cloud Run с помощью Google Cloud Build (без использования Docker). При локальном использовании в моей виртуальной среде все идет нормально, но после развертывания в облаке корпус не загружается. Глядя на файл requriements.txt, также не было ссылки на этот корпус.

Я попытался добавить python -m textblob.download_corpora в свой файл requriements.txt, но он не загружается, когда я его развертываю. Я также пытался добавить

import textblob
import subprocess
cmd = ['python','-m','textblob.download_corpora']
subprocess.run(cmd)

а также

import nltk
nltk.download('movie_reviews')

в мой скрипт (callbacks.py, я использую Plotly Dash для создания своего приложения), и все безуспешно.

Есть ли способ добавить этот корпус в мой файл requirements.txt? Или есть другой обходной путь для загрузки этого корпуса? Как я могу это исправить?

Заранее спасибо!

Виджай


person Vijay B    schedule 10.05.2021    source источник


Ответы (1)


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

Самый простой способ сделать это - добавить в файл докера еще одну строку, которая загружает и устанавливает корпус во время сборки, например:

RUN python -m textblob.download_corpora 

Вот полный файл докеров для справки:

# Python image to use.
FROM python:3.8

# Set the working directory to /app
WORKDIR /app

# copy the requirements file used for dependencies
COPY requirements.txt .

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
RUN python -m textblob.download_corpora

# Copy the rest of the working directory contents into the container at /app
COPY . .

# Run app.py when the container launches
ENTRYPOINT ["python", "app.py"]

Удачи, Джош

person Josh Bloom    schedule 10.05.2021
comment
Привет, Джош, спасибо за решение. Приятно знать, что я могу использовать Docker как запасной вариант. Однако в настоящее время я использую Cloud Buildpack для автоматической компиляции контейнера. Есть ли способ установить TextBlob с помощью Cloud Buildpack? У Heroku есть решение для этого: python-nltk, есть ли у Google аналогичное решение? - person Vijay B; 11.05.2021
comment
@VijayB Вы можете настроить Buildpack, чтобы установить корпус за вас, но я думаю, что может быть проще переключиться на использование файла докеров из Cloudbuild. - person Josh Bloom; 11.05.2021