azure 持久函数在调用活动时是否总是需要 yield?

Does azure durable functions always require yield when calling activities?

我有一个问题,我一直在使用持久函数并且我的函数应用程序资源被耗尽,通常据我所知,当使用 yield 执行时,持久函数活动是在异步或并行模式下执行的,所以在这个例子中F1 和 F2 同时调用,当两个结果都创建时,它们将在我的列表中聚合,整个编排将完成,是否可以在没有 yield 的情况下按顺序执行函数?


import logging
import json

import azure.functions as func
import azure.durable_functions as df


def orchestrator_function(context: df.DurableOrchestrationContext):
    result1 = yield context.call_activity('F1', 'arg')
    result2 = yield context.call_activity('F2', 'arg')
    return [result1, result2]

main = df.Orchestrator.create(orchestrator_function)

由于您正在使用 orchestrator 函数,也称为生成器函数,因此它必须使用 Yield 关键字。没有 Yield 关键字就无法执行函数。在您的情况下,要执行函数顺序,您可以使用函数链接,通过它我们可以一个一个地执行函数。

更多详情,您可以查看相关链接

  1. Durable Functions Overview - Azure | Microsoft Docs
  2. Simple statements — Python 3.10.2 documentation
  3. Glossary — Python 3.10.2 documentation