Не удается использовать тело json облачного планировщика gcp в облачной функции в качестве значения параметра? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть облачный планировщик, который я использую для запуска своей облачной функции как http-вызова. В моей облачной функции я хотел бы сформировать запрос (который должен быть динамическим).Для этого я передаю некоторый параметр из облачного планировщика (Json Body), но когда я запускаю свою облачную функцию, он не принимает значения параметров, поступающие из облачного планировщика, в качестве json body.Может кто-нибудь помочь мне решить эту проблему.

тело json из облачного планировщика:

{ 
   "unit":"QA",
   "interval":"3"
}

Код функции облака:

def main(request):

    request_json = request.get_json(silent=True)
    request_args = request.args

    if request_json and 'unit' in request_json:
        retail_unit = request_json['unit']
    elif request_args and 'unit' in request_args:
        retail_unit = request_args['unit']
    else:
        unit = 'UAT'

    if request_json and 'interval' in request_json:
        interval = request_json['interval']
    elif request_args and 'interval' in request_args:
        interval = request_args['interval']
    else:
        interval = 1

    query = "select * from `myproject.mydataset.mytable` where unit='{}' and interval ={}".format(                                                                                                    
    unit,interval)
    client = bigquery.Client()
    job_config = bigquery.QueryJobConfig()
    dest_dataset = client.dataset(destination_dataset, destination_project)
    dest_table = dest_dataset.table(destination_table)
    job_config.destination = dest_table
    job_config.create_disposition = 'CREATE_IF_NEEDED'
    job_config.write_disposition = 'WRITE_APPEND'
    job = client.query(query, location='US', job_config=job_config)
    job.result()

Примечание: Это работает, когда я передаюте же переменные из облачного планировщика, что и значения аргументов в http url (https://my -region-test-project.cloudfunctions.net / mycloudfunction? unit = QA & interval = 3 )

1 Ответ

1 голос
/ 25 сентября 2019

Лучший совет - выпуск UTF-8.

Ознакомьтесь также с ситуациями, описанными в этом другом потоке: Функция запуска HTTP-облака с планировщиком облака

...