gpt4 book ai didi

无需 HttpTrigger 的 Azure 持久函数调用(自动启动)

转载 作者:行者123 更新时间:2023-12-03 16:51:22 31 4
gpt4 key购买 nike

我正在查看这个示例,以便在设置的超时后运行持久函数 Activity。

https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-eternal-orchestrations

这将允许我的函数事件执行数据处理,然后等待 1 小时,然后再尝试再次加载。这将永远持续下去。完美。

但是,当将函数发布到 Azure 时,我不想通过关联的 HTTP 触发器手动调用/启动该函数。我只是希望持久功能自动启动并开始处理。

这可能吗?如果没有,建议的解决方法是什么?

谢谢!

最佳答案

正如评论中所讨论的,实现此目的的一种方法是在发布管道中添加一个新任务。

以下是我从您的问题中对您的设置的理解:

[FunctionName("ClientFunction")]
public static async Task<HttpResponseMessage> OnHttpTriggerAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequestMessage request, [OrchestrationClient] DurableOrchestrationClient starter, ILogger logger)
{
// Triggers the orchestrator.
string instanceId = await starter.StartNewAsync("OrchestratorFunction", null);

return new HttpResponseMessage(HttpStatusCode.OK);
}


[FunctionName("OrchestratorFunction")]
public static async Task DoOrchestrationThingsAsync([OrchestrationTrigger] DurableOrchestrationContext context, ILogger logger)
{
DateTime deadline = context.CurrentUtcDateTime.Add(TimeSpan.FromHours(1));
await context.CreateTimer(deadline, CancellationToken.None);

// Triggers some yout activity.
await context.CallActivityAsync("ActivityFunction", null);
}

[FunctionName("ActivityFunction")]
public static Task DoAnAwesomeActivity([ActivityTrigger] DurableActivityContext context)
{
}

现在,每次部署新版本的 Function App 时,都需要运行协调器。不过,我认为它不能单独启动。

我的建议是使用一个简单的 bash 脚本(使用 curl 或其他内容)来在适当的 URL 调用 ClientFunction

Bash script

最重要的是,此解决方案的好处之一是,如果 Azure Function 没有响应,您可能会导致部署失败。

关于无需 HttpTrigger 的 Azure 持久函数调用(自动启动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54608103/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com