在 Azure 持久函数中,如何将一个 activity 函数的输出作为另一个函数的输入

In Azure durable functions ,How can I get the output of one activity function as an input for another function

我正在使用 Azure Durable 函数启动新功能,并且我按照教程进行操作并且能够 运行 它没有任何错误。如我所见,我的要求是从 activity 函数之一获取输出并将其用作其他 activity 函数的输入,并且另一个 activity 函数不应该启动,除非前一个activity 功能已经完成。我该怎么做?

这是 运行s 的代码:我想将“Hello”activity 函数 return 的值 src_client 用作 activity函数“再见”

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('Hello', "bestday-demo")
    result2 = yield context.call_activity('Goodbye', "Seattle")
    result3 = yield context.call_activity('Hello', "London")
    return [result1, result2, result3]

main = df.Orchestrator.create(orchestrator_function) 

这是我的 activity 函数“你好”

import logging
from myownsdk import myClient


def main(projectname: str) -> str:
    SRC_PROJECT_DAY = projectname
    src_client = myClient(
        api_key= "Myapikey",
        client_name= "Proj-DEMO_CLIENT",
        project = SRC_PROJECT_DAY,
        debug=False
        )
    return f"{src_client}"

这是我的 activity 功能“再见”。这个 return 的“再见西雅图”,但我想通过 Hello activity 函数传递我的 src_client 并使用它来获得更多结果。

import logging
from myownsdk import myClient


def main(name: str) -> str:    
    return f"GoodBye {name}!"

此外,我如何才能确定,只有当 Hello 已被执行并完成时,再见 运行s。感谢您的帮助。

这是因为您正在调用 goodbye 函数和 result2 中的字符串 Seattle 并且无法进行编排。

我观察到您的协调器功能与 original document 相比并不相同,因此请确保您以正确的方式调用它,按照以下代码尝试更改您的代码。

 import azure.functions as func
    import azure.durable_functions as df
      
   def orchestrator_function(context: df.DurableOrchestrationContext):
        result1 = yield context.call_activity('Hello', "bestday-demo")
        result2 = yield context.call_activity('Goodbye', result1)
        result3 = yield context.call_activity('Hello', result2)
        return result3
    
    
    main = df.Orchestrator.create(orchestrator_function)

另外,尝试改变你的再见Activity功能。

import logging
from myownsdk import myClient


def main(name: str) -> str:    
    return f"GoodBye seattle {name}!"