【发布时间】:2019-12-12 23:48:22
【问题描述】:
我正在 Google Cloud Functions 上运行下面的 python 脚本。测试脚本时出现以下错误:
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
run() takes 0 positional arguments but 1 was given
这是什么意思?
这是我的脚本:
from google.cloud import bigquery
client = bigquery.Client()
def run():
csv_file = six.BytesIO(b"""full_name,age
Phred Phlyntstone,32
Wylma Phlyntstone,29
""")
table_ref = dataset.table('ga-online-audit:test_python.test')
job_config = bigquery.LoadJobConfig()
job_config.source_format = 'CSV'
job_config.skip_leading_rows = 1
job = client.load_table_from_file(
csv_file, table_ref, job_config=job_config) # API request
job.result() # Waits for table load to complete.
在我学习的过程中,我从以下文档 https://google-cloud-python.readthedocs.io/en/0.32.0/bigquery/usage.html 中获取了这个脚本
【问题讨论】:
-
你怎么打电话给
run?错误描述很清楚:run接受 0 个参数,但被调用它的任何东西传递一个。 -
我已经在 Google Cloud Function 中的 function to execute 字段中传递了我的函数名称。我正在使用测试触发器运行我的函数。
-
我对@987654327@ 一点也不熟悉,但我猜谷歌正在将某种
event对象传递给你的运行函数。有更多知识的人可以以此为基础,但为了弄清楚到底发生了什么,我会修改run以接受单个参数,并立即修改print该参数的值,看看它是什么看起来像。 -
我建议将其简化为重现问题的最少代码。如果你删除 bigquery 的所有痕迹,我想你仍然会遇到同样的问题。因此,请执行以下操作:编辑问题以显示最少的代码,并显示您如何使用 gcloud 部署此功能。 stackoverflow.com/help/mcve
-
但是,如果我要删除 BigQuery 的痕迹,就没有留下任何东西吗?唯一与 bigquery 无关的是 csv_file 变量。就像我说的那样,该功能是通过 Google Cloud Functions 部署的。
标签: python python-3.x google-cloud-functions