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 关键字就无法执行函数。在您的情况下,要执行函数顺序,您可以使用函数链接,通过它我们可以一个一个地执行函数。
更多详情,您可以查看相关链接
我有一个问题,我一直在使用持久函数并且我的函数应用程序资源被耗尽,通常据我所知,当使用 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 关键字就无法执行函数。在您的情况下,要执行函数顺序,您可以使用函数链接,通过它我们可以一个一个地执行函数。
更多详情,您可以查看相关链接