python - 部署到 gcp 应用引擎后无法连接到云存储
问题描述
我正在 App Engine 虚拟机上开发一个 Flask 应用程序。我想将文件上传到谷歌云存储,所以我storage_client = storage.Client()
用来连接到云存储。单独在 VM 中测试时,我的应用程序运行良好,没有错误。但是,在我部署gcloud app deploy
并在我部署的应用程序上测试上传功能后,它失败并返回Internet 500
错误。日志显示了回溯,这是由于连接到云存储的代码行:storage_client = storage.Client()
具体报错__init__() takes 2 positional arguments but 3 were given
见云存储库函数。我有这个应用程序的python 3.5,我真的不知道如何解决这个问题。任何帮助将非常感激!
Traceback (most recent call last):
File \"/env/lib/python3.5/site-packages/flask/app.py\", line 2292, in wsgi_app
response = self.full_dispatch_request()
File \"/env/lib/python3.5/site-packages/flask/app.py\", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File \"/env/lib/python3.5/site-packages/flask/app.py\", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File \"/env/lib/python3.5/site-packages/flask/_compat.py\", line 35, in reraise
raise value
File \"/env/lib/python3.5/site-packages/flask/app.py\", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File \"/env/lib/python3.5/site-packages/flask/app.py\", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File \"/home/vmagent/app/main.py\", line 59, in select_date
generate_report(log_lists)
File \"/home/vmagent/app/main.py\", line 83, in generate_report
storage_client = storage.Client()
File \"/env/lib/python3.5/site-packages/google/cloud/storage/client.py\", line 86, in __init__
self._connection = Connection(self, client_info=client_info)
File \"/env/lib/python3.5/site-packages/google/cloud/storage/_http.py\", line 33, in __init__
super(Connection, self).__init__(client, client_info)
TypeError: __init__() takes 2 positional arguments but 3 were given
下面是我的“requirements.txt”:
Flask==1.0.2
gunicorn==19.9.0
firebase-admin==2.13.0
google-cloud-firestore==0.29.0
google-cloud-storage==1.17.0
lxml==3.7.3
解决方案
您正在使用旧库。更新您的 requirements.txt 以使用当前版本。
例如:
您正在使用google-cloud-firestore==0.29.0
,但当前版本是google-cloud-firestore==1.3.0
您的大多数模块都已过时,并且在某些情况下不兼容(以及与当前库的古老库)。
推荐阅读
- html - 如何在引导折叠/手风琴中正确制作固定标题?
- rust - How to uninstall Rust that was installed via rustup?
- javascript - Get First Sentence with Regex (JavaScript)
- puppet - 使用 Puppet 设置文件模式
- ios - Spritekit 2.5d 如何为越来越近的物体设置动画(例如 Temple Run)
- html - 在引导程序中定位输入按钮和文本
- angular - Angular 6调用服务未在表单更改中返回数据
- jquery - Using Django, the selected option of a dropdown menu is not passed to the server
- docker - 无法连接到同一 Docker 网络中的链接容器
- java - 是否可以在带有 ISA x86 的 gem5 模拟器上运行 java -jar?