“接受0个位置参数但给了1个”错误

时间:2019-12-12 23:48:22

标签: python python-3.x google-cloud-functions

我正在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中获取了此脚本

1 个答案:

答案 0 :(得分:1)

由于已经发布了所有代码,因此很明显其他功能正在调用您的函数。在python中查看Google Cloud Function example,看起来您的函数必须定义为至少包含一个参数。

链接的文章中的代码具有def hello_world(request),在这种情况下,request是调用cloud函数时传递的参数。 AWS Lambda很相似,它们将来自客户端的所有URL参数或JSON有效负载打包到此request参数中,所以这很可能就是这里发生的事情。

我建议在run的定义中添加一个参数。这将解决您的错误,检查参数将使您了解Google云功能平台会自动将哪些信息发送给您的代码。