Как вызвать облачную функцию внутри другой облачной функции и передать некоторые входные параметры или аргумент, используя python? - PullRequest
0 голосов
/ 13 октября 2019

У меня всего 3 облачные функции, 1-я облачная функция, которая имеет некоторые условия, если условие истинно, то она должна запустить 2-ю и 3-ю облачную функцию, а также передать требуемые аргументы или параметры во 2-ю и 3-ю облачную функцию, прежде чем она их запустит. Я пробовал выполнить все три по отдельности, но мне нужна помощь в выполнении описанного выше сценария.

Код облачной функции-1 в python:

def main(request):
    dest_table_name = 'my_dest_table' 
    myquery = "select count(*) size from `myproject.mydataset.mytable`"
    client = bigquery.Client()
    job = client.query(myquery)
    result = job.result()
    for row in results:
        print("Total rows available: ",row.size)
    if row.size != 0:
        pass "dest_table_name" to 2nd cloud function and execute it.
        pass "dest_table_name" to 3rd cloud function and execute it.
    else:
        print("query result is empty")

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Вы можете:

  • вызвать функцию через триггер HTTP, например, с requests.get(<your function URL>) и передать параметры в качестве параметров URL;или:
  • просто разложите все ваши общие функции в один и тот же файл и вызовите его как обычную функцию Python.

У последнего будет значительно меньше накладных расходов, но это может увеличитьобщее время выполнения функции.

0 голосов
/ 14 октября 2019

С вашими данными и требованиями, я рекомендую вам использовать PubSub и сделать это

  • Создать тему PubSub
  • Развернуть функцию # 2 с триггером на событие PubSub наранее созданная тема
  • Развертывание функции # 3 с триггером для события PubSub в ранее созданной теме
  • Функция # 1 создает сообщение PubSub с правильными параметрами и публикует его
  • Функции # 2 и # 3 запускаются параллельно с сообщением, опубликованным в PubSub. Они извлекают из него параметры и выполняют процесс

Кстати, вы не связаны, вы масштабируемы, вы параллельны.

...