Клиент Python для облачного хранилища Google AttributeError: объект «ClientOptions» не имеет атрибута «области действия», возникающие после развертывания

Я использую облачное хранилище с App Engine Flex. Ни с того ни с сего я начинаю получать это сообщение об ошибке после успешного развертывания

Ошибка возникает из-за этих строк в моем приложении фляги.

from google.cloud import storage, datastore
client = storage.Client()
File "/home/vmagent/app/main.py", line 104, in _load_db
    client = storage.Client()
  File "/env/lib/python3.6/site-packages/google/cloud/storage/client.py", line 110, in __init__
    project=project, credentials=credentials, _http=_http
  File "/env/lib/python3.6/site-packages/google/cloud/client.py", line 250, in __init__
    Client.__init__(self, credentials=credentials, client_options=client_options, _http=_http)
  File "/env/lib/python3.6/site-packages/google/cloud/client.py", line 143, in __init__
    scopes = client_options.scopes or self.SCOPE
AttributeError: 'ClientOptions' object has no attribute 'scopes'

Это как-то связано с нарушением обновлений, сделанных для пакетов grpcio и google-api-core и google-cloud-storage, основанных на многочисленных потоках SO. Однако я не могу понять, где это происходит.

Мои требования.txt выглядят следующим образом:

setuptools>=40.3
grpcio<=1.27.2
google-api-core<1.17.0
Flask

gevent>=0.13

gunicorn>=19.7.1
numpy>=1.18.0
numpy-financial
scipy>=1.4
pvlib>=0.7
google-cloud-storage==1.28.0
google-cloud-datastore==1.12.0
google-cloud-pubsub
pandas==1.0.5

мой app.yaml выглядит следующим образом:

service: app-preprod
runtime: custom
env: flex
entrypoint: gunicorn -t 600 -c gunicorn.conf.py -b :$PORT main:app


runtime_config:
   python_version: 3.6
manual_scaling:
    instances: 1
resources:
    cpu: 1
    memory_gb: 4
beta_settings:
    cloud_sql_instances: xxxx:europe-west6:component-cost
   
endpoints_api_service:
  name: apipreprod-dot-xxxx.appspot.com
  rollout_strategy: managed

Глядя на историю выпусков, несколько дней назад были выпущены некоторые новые версии google-cloud-storage и т. д., но я пытался сохранить тот же номер старой версии.

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

--EDIT-- По-видимому, согласно

https://github.com/googleapis/google-cloud-python/issues/10471

я должен просто добавить

google-cloud-core==1.3.0 в требования.txt Это кажется обходным путем --- есть ли лучший постоянный способ гарантировать, что этот разрыв не застанет меня врасплох?


person Vipluv    schedule 06.08.2020    source источник


Ответы (2)


Это связано с https://github.com/googleapis/google-cloud-python/issues/10471.

Я бы рекомендовал обновить google-cloud-core и google-api-core до последних версий с исправлением ошибки.

person Dustin Ingram    schedule 06.08.2020
comment
Я очень боюсь обновляться до последней версии, потому что в прошлом были критические изменения, особенно в grpcio и google-api-core, которые заставляли нас откатываться, поэтому google-cloud-core привязан к 1.3.0. Например, это оставило меня в покое — github.com/googleapis/python -api-core/issues/47 - person Vipluv; 06.08.2020

Это сообщение об ошибке указывает на то, что вам необходимо установить атрибут «scopes» для вашего объекта ClientOptions.

Я хотел бы предложить вам ознакомиться с этой документацией для Параметры клиента. Атрибут «Области» должен быть «Области переопределения токена доступа OAuth». Вы можете установить его в None. Пожалуйста, просмотрите эту часть кода.

С другой стороны, убедитесь, что ваша среда правильно подготовлена ​​для использования клиентских библиотек.

person Harif Velarde    schedule 06.08.2020