Как установить новейшую версию библиотеки в облачных функциях Google из файла require.txt - PullRequest
2 голосов
/ 26 февраля 2020

Когда облачная функция развернута, я предполагаю, что Google выполняет некоторый эквивалент:

pip install -r requirements.txt

Допустим, файл requirements.txt содержит:

google-cloud-pubsub
google-cloud-storage==1.26.0

Поскольку указана версия облачного хранилища, все существующие и будущие экземпляры масштабированных функций будут устанавливать эту версию.

A gcloud functions deploy ... установит библиотеки хранилища 1.26.0 во всех экземплярах.

Однако давайте Допустим, что экземпляр уже запущен с google-cloud-pubsub установленной версией 1.0.2 и самой новой версией 1.3.0.

Приведенная выше команда pip не загрузит более новую версию.

Вместо этого будет Requirement already satisfied ответ. Существующий экземпляр останется в версии 1.0.2, в то время как все новые масштабированные экземпляры будут использовать 1.3.0. Возможны несоответствия версий библиотеки между экземплярами одной и той же облачной функции.

  1. Правильно ли я понимаю этот процесс? Делает ли GCP эквивалент pip install -r requirements.txt?
  2. Есть ли способ заставить облачные функции импортировать новейшую версию библиотеки во время развертывания с помощью require.txt или иным способом?

Ответы [ 2 ]

1 голос
/ 05 апреля 2020
Есть ли способ заставить облачные функции импортировать новейшую версию библиотеки во время развертывания с помощью require.txt или иным образом?

Я проверил это и обнаружил противоположность { ссылка }

Вы должны указать более новую версию в requirements.txt, чтобы принудительно использовать более новую библиотеку. В противном случае будет использоваться существующая библиотека.

https://cloud.google.com/functions/docs/concepts/exec#multiple_functions не говорит о том, что некоторые файлы не используются повторно при создании нового экземпляра. Они будут копировать некоторые файлы, так как они, безусловно, не произведут новую полную установку для каждого экземпляра. Это займет слишком много времени. Относительно библиотек python тот же пункт действителен. При каждом развертывании потребуется слишком много времени для установки всех библиотек python.

1 голос
/ 26 февраля 2020
  1. Точно ли я понимаю этот процесс? Делает ли GCP эквивалент pip install -r requirements.txt?

Вы правы. При развертывании Cloud Functions создает образ, устанавливает в него ваши зависимости и вашу функцию и использует их для обслуживания вашей функции.

Есть ли способ заставить облачные функции импортировать новейшую версию библиотеки во время развертывания с помощью require.txt или иным способом?

Я не уверен, что точно следую , но вы, кажется, думаете, что повторные установки будут использовать один и тот же образ. Они этого не делают: каждый раз, когда вы развертываете, он запускается с нуля и выполняет описанные выше шаги.

Это означает, что если вы открепите свои зависимости (т.е. не ==1.26.0), вы всегда получите последнюю совместимую версию этих проекты каждый раз при запуске развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...