Google cloud storage python client AttributeError: 'ClientOptions' object has no attribute 'scopes' occurs after deployment
Google cloud storage python client AttributeError: 'ClientOptions' object has no attribute 'scopes' occurs after deployment
我正在将云存储与 App Engine Flex 结合使用。部署成功后,我突然开始收到此错误消息
我的 Flask 应用程序中的这些行发生了错误。
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'
这与基于大量 SO 线程对 grpcio 和 google-api-core 和 google-cloud-storage 包进行的中断升级有关。但是,我不知道这是哪里发生的。
我的requirements.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 等的一些新版本,但我试图保持相同的旧版本号。
荒谬的是,对于这些完全相同的 requirements.txt,我有一个完全相同的产品应用程序引擎,运行良好 --- 但我已经有一个星期没有重新部署了。
显然,从我的本地计算机到 运行 客户端的完全相同版本的存储和数据存储完全没有问题。
--编辑--
显然根据
https://github.com/googleapis/google-cloud-python/issues/10471
我应该加上
google-cloud-core==1.3.0
至 requirements.txt
这似乎是一种解决方法 --- 是否有更好的永久性方法来确保这种中断不会让我措手不及?
这是由于 https://github.com/googleapis/google-cloud-python/issues/10471。
我建议将 google-cloud-core
和 google-api-core
升级到包含错误修复的最新版本。
此错误消息表明您需要为 ClientOptions 对象设置属性“范围”。
我建议您查看 ClientOptions 的文档。 “scopes”属性应该是“OAuth access token override scopes”。您可以将其设置为 None。请检查您的那部分代码。
另一方面,请确保您已正确准备好环境以使用 Datastore client libraries。
我正在将云存储与 App Engine Flex 结合使用。部署成功后,我突然开始收到此错误消息
我的 Flask 应用程序中的这些行发生了错误。
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'
这与基于大量 SO 线程对 grpcio 和 google-api-core 和 google-cloud-storage 包进行的中断升级有关。但是,我不知道这是哪里发生的。
我的requirements.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 等的一些新版本,但我试图保持相同的旧版本号。
荒谬的是,对于这些完全相同的 requirements.txt,我有一个完全相同的产品应用程序引擎,运行良好 --- 但我已经有一个星期没有重新部署了。 显然,从我的本地计算机到 运行 客户端的完全相同版本的存储和数据存储完全没有问题。
--编辑-- 显然根据
https://github.com/googleapis/google-cloud-python/issues/10471
我应该加上
google-cloud-core==1.3.0
至 requirements.txt
这似乎是一种解决方法 --- 是否有更好的永久性方法来确保这种中断不会让我措手不及?
这是由于 https://github.com/googleapis/google-cloud-python/issues/10471。
我建议将 google-cloud-core
和 google-api-core
升级到包含错误修复的最新版本。
此错误消息表明您需要为 ClientOptions 对象设置属性“范围”。
我建议您查看 ClientOptions 的文档。 “scopes”属性应该是“OAuth access token override scopes”。您可以将其设置为 None。请检查您的那部分代码。
另一方面,请确保您已正确准备好环境以使用 Datastore client libraries。