繁体   English   中英

client.get_bucket() 返回错误:api_request() 得到了一个意外的关键字参数“extra_api_info”

[英]client.get_bucket() returns error: api_request() got an unexpected keyword argument 'extra_api_info'

我正在尝试使用云 function 将换行符分隔的 JSON 字符串存储在 GCS 存储桶中,但看到错误。 我首先将 dataframe 转换为 ndjson,然后尝试将其上传到我的 GCS 存储桶,如下所示。 上面还有更多代码,但与我的问题无关:

import pandas as pd
from google.cloud import storage
from google.cloud.storage import blob

df = df.to_json(orient="records", lines=True)

storage_client = storage.Client(project='my-project')
bucket = storage_client.get_bucket('my-bucket')
blob = bucket.blob('my-blob')
blob.upload_from_string(df)

运行此程序时,我在日志中发现以下错误:

Exception on / [POST] Traceback (most recent call last): 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 2073, in wsgi_app response = self.full_dispatch_request() 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1518, in full_dispatch_request rv = self.handle_user_exception(e) 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1516, in full_dispatch_request rv = self.dispatch_request() 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1502, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/functions_framework/__init__.py", line 99, in view_func return function(request._get_current_object()) 
File "/workspace/main.py", line 66, in my_request bucket = storage_client.get_bucket('my-bucket') 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/storage/client.py", line 787, in get_bucket retry=retry, 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/storage/bucket.py", line 1037, in reload retry=retry, 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/storage/_helpers.py", line 244, in reload _target_object=self, 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/storage/client.py", line 373, in _get_resource _target_object=_target_object, 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/storage/_http.py", line 73, in api_request return call() 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/api_core/retry.py", line 288, in retry_wrapped_func on_error=on_error, 
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/api_core/retry.py", line 190, in retry_target return target() TypeError: api_request() got an unexpected keyword argument 'extra_api_info'

这个 'extra_api_info' 参数似乎是罪魁祸首,但我不知道这意味着什么,并且在遵循完全相同的方法时从来没有得到这个错误,所以我想知道这是否是由于不同版本之间的一些变化 ' google.cloud 的 Python 模块。

我有同样的问题; google.cloud.storage==1.44.0修复了它。

我想出了我自己问题的答案。 正如我所怀疑的,这确实是一个模块版本问题。

在我的requirements.txt文件中指定google.cloud.storage==1.44.0解决了这个问题,因为我的代码似乎与该模块的最新版本不兼容(出于我无法理解的原因)。

感谢您报告这一点,并为我们直到现在才错过它而道歉。

我们在https://github.com/googleapis/python-storage/issues/831上跟踪 Github 上的这个错误

如果您仍然遇到此问题,很高兴知道一些事情,您可以在此处或 Github 上回复。

  • 这个问题是间歇性的,只是偶尔发生,还是总是发生?
  • 您能否分享在您的源目录中pip freeze的结果,以便我们查看是否存在任何版本问题?
  • 您可以尝试将 retry=None 传递给 get_bucket 方法,看看是否仍然出现错误?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM