Я использую облачное хранилище с 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'
Это то, что нужно сделать с критическими обновлениями пакетов grpcio и google-api-core и google-cloud-storage на основе многочисленных потоков SO. Однако я не могу понять, где это происходит.
Мой файл 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 et c были выпущены через несколько дней go, но я попытался сохранить тот же старый номер версии.
Смешно Дело в том, что с этими точно такими же требованиями .txt у меня есть идентичный движок приложений prod, который работает нормально, но я не перераспределял его в течение недели. Очевидно, нет никаких проблем с точно такими же версиями хранилища и хранилища данных для запуска клиента с моего локального компьютера.
- РЕДАКТИРОВАТЬ - Очевидно, согласно
https://github.com/googleapis/google-cloud-python/issues/10471
Мне нужно просто добавить
google-cloud-core==1.3.0
в файл requirements.txt. Кажется, это обходной путь - какой-нибудь лучший постоянный способ гарантировать, что этот перерыв не застает меня врасплох?