如何在 google 云调度程序 (Python) 中定义的 google 云函数中使用主体参数?
How to use body parameters in google cloud function which are defined in google cloud scheduler(Python)?
在我的云函数中,我有一个正在执行的查询,并将作业结果写入新的 bigquery table。我希望我的查询应该是基于一些单位值的动态查询(使用外部动态参数),我从 google 云调度程序触发这个云函数(它在 Body 部分包含一些参数值(使用 post 方法使用 http 调用)),任何人都可以建议如何将云调度程序正文部分中的此参数值用于我的云函数以使我的查询动态化
在 cloud scheduler 的 Body 部分传递了某些参数,但不知道如何在 cloud function 中使用它们。
云调度器主体:
{
'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"
执行此操作的最佳方法是使用 pub/sub:
将所有内容保留在 Google 云中
您的 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 作业中传递的正文属性。
在我的云函数中,我有一个正在执行的查询,并将作业结果写入新的 bigquery table。我希望我的查询应该是基于一些单位值的动态查询(使用外部动态参数),我从 google 云调度程序触发这个云函数(它在 Body 部分包含一些参数值(使用 post 方法使用 http 调用)),任何人都可以建议如何将云调度程序正文部分中的此参数值用于我的云函数以使我的查询动态化
在 cloud scheduler 的 Body 部分传递了某些参数,但不知道如何在 cloud function 中使用它们。
云调度器主体:
{
'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"
执行此操作的最佳方法是使用 pub/sub:
将所有内容保留在 Google 云中您的 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 作业中传递的正文属性。