【问题标题】:"takes 0 positional arguments but 1 was given" error“接受 0 个位置参数,但给出了 1 个”错误
【发布时间】: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 字段中传递了我的函数名称。我正在使用测试触发器运行我的函数。
  • 我对@9​​87654327@ 一点也不熟悉,但我猜谷歌正在将某种event 对象传递给你的运行函数。有更多知识的人可以以此为基础,但为了弄清楚到底发生了什么,我会修改 run 以接受单个参数,并立即修改 print 该参数的值,看看它是什么看起来像。
  • 我建议将其简化为重现问题的最少代码。如果你删除 bigquery 的所有痕迹,我想你仍然会遇到同样的问题。因此,请执行以下操作:编辑问题以显示最少的代码,并显示您如何使用 gcloud 部署此功能stackoverflow.com/help/mcve
  • 但是,如果我要删除 BigQuery 的痕迹,就没有留下任何东西吗?唯一与 bigquery 无关的是 csv_file 变量。就像我说的那样,该功能是通过 Google Cloud Functions 部署的。

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


【解决方案1】:

由于您已经发布了所有代码,很明显有其他东西正在调用您的函数。查看 Python 中的 Google Cloud Function example,看起来您的函数必须定义为至少需要一个参数。

链接文章中的代码有def hello_world(request),在本例中,request 是调用云函数时传递的参数。 AWS Lambda 与此类似,因为它们将来自客户端的任何 URL 参数或 JSON 有效负载打包到这个 request 参数中,所以这很可能是这里发生的事情。

我建议在run 的定义中添加一个参数。这将修复您的错误,并且检查参数将使您了解 Google 云函数平台自动发送到您的代码的信息类型。

【讨论】:

  • 我已经在问题中跳过了我的整个代码,所以我猜没有运行(arg)。
  • 因为这是您的全部代码,很明显 Google Cloud 正在调用您的函数并希望它接受一个参数。我已经更新了我的答案。
猜你喜欢
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2017-10-05
  • 2016-01-30
  • 2019-06-26
  • 2014-11-12
相关资源
最近更新 更多