【问题标题】:How to use body parameters in google cloud function which are defined in google cloud scheduler(Python)?如何在谷歌云调度程序(Python)中定义的谷歌云函数中使用主体参数?
【发布时间】:2019-09-19 14:29:38
【问题描述】:

在我的云函数中,我有一个正在执行的查询并将作业结果写入新的 bigquery 表。我希望我的查询应该是基于一些单位值的动态的(使用外部动态参数),我从谷歌云调度程序触发这个云函数(它在正文部分包含一些参数值(使用带有 http 调用的 post 方法)),任何人都可以建议如何将云调度程序主体部分中的此参数值用于我的云函数中,以使我的查询动态化

在云调度器的正文部分传递某些参数,但不知道如何在云函数中使用它们。

云调度器主体:

{
'unit': 'myunitname'
'interval':'1'
}

云功能:

import flask
from google.cloud import bigquery

app = flask.Flask(__name__)


def main(request):
    with app.app_context():
        query = "SELECT unitId FROM `myproject.mydataset.mytable` 
        where unit ='{}' and interval='{}'".format(unit,interval)
        client = bigquery.Client()
        job_config = bigquery.QueryJobConfig()
        dest_dataset = client.dataset('mydataset', 'myproject')
        dest_table = dest_dataset.table('mytable')
        job_config.destination = dest_table
        job_config.create_disposition = 'CREATE_IF_NEEDED'
        job_config.write_disposition = 'WRITE_APPEND'
        job = client.query(query, job_config=job_config)
        job.result()

        return "Triggered"

【问题讨论】:

    标签: python google-bigquery google-cloud-functions google-cloud-scheduler


    【解决方案1】:

    执行此操作的最佳方法是使用 pub/sub 将所有内容保留在 Google Cloud 内部:

    [official Google tutorial]

    您的 Cloud Scheduler 向 Pub/Sub 发送一条消息,其中包含您的 Cloud Function 所需信息的有效负载对象。 Cloud Function 应该从 Pub/Sub 主题触发,然后您可以访问您所引用的动态部分所需的 message.attributes

    Cloud Scheduler -- 发布到 --> Pub/Sub Topic -- 订阅者推送 --> Cloud Function


    如果您想继续使用 HTTP,您可以关注here,其中描述了如何在您的函数中使用 POST。您正在使用 requests 模块来提取您在 Cloud Scheduler 作业中传递的正文属性。

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 2021-05-09
      • 2021-06-08
      • 2021-03-04
      • 2020-11-21
      • 2020-12-12
      • 2021-01-12
      • 2018-12-07
      • 2018-10-02
      相关资源
      最近更新 更多