web-dev-qa-db-fra.com

Google Cloud Storage python Client AttributeError: l'objet "ClientOptions" n'a aucun attribut "Scopes" après le déploiement

J'utilise le stockage en nuage avec App Boîte Flex. Hors du bleu, je commence à obtenir ce message d'erreur après le déploiement succédant

L'erreur se passe à partir de ces lignes dans mon flask application.

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'

C'est quelque chose à voir avec des mises à niveau de rupture des packages de GRPCIO et de Google-API-CORE et de Google-Cloud-Stockage basé sur de nombreux SO Threads. Cependant, je ne peux pas comprendre où cela se passe.

Mes exigences.txt est la suivante:

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

mon app.Yaml est comme suit:

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

En regardant les histoires de libération, de nouvelles versions de Google-Cloud-Storage, etc. ont été publiées il y a quelques jours, mais j'ai essayé de maintenir le même numéro de version plus ancienne.

La chose ridicule est que, avec ces mêmes exigences .txt, j'ai un moteur d'application produit identique qui fonctionne bien - mais que je n'avais pas redéployé pendant une semaine. De toute évidence, aucun problème avec exactement les mêmes versions de stockage et de données de données pour exécuter le client à partir de ma machine locale.

--Edit-- apparemment selon

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

je devrais juste ajouter

google-cloud-core==1.3.0 à la configuration requise.txt Cela semble une solution de contournement --- Toute meilleure façon permanente de s'assurer que cette pause ne m'attrape pas sans caprice?

12
Vipluv

Ce message d'erreur indique que vous devez définir un attribut "Scopes" pour votre objet de clientOPTIONS.

Je voudrais vous suggérer de jeter un coup d'œil à cette documentation pour le Clientoptions . L'attribut "Scopes" doit être "Oauth Access Token Override Scopes". Vous pouvez le définir à aucun. S'il vous plaît examiner cette partie de votre code.

D'autre part, assurez-vous que votre environnement est correctement préparé à utiliser DataStore Bibliothèques client .

0
Harif Velarde