【发布时间】:2022-02-18 02:20:28
【问题描述】:
我有一个用例要求我在不关心其结果的情况下触发一些 Azure Durable Functions,我想知道我的方法是否正确。
这是我所处的场景:
- 函数
A使用HttpTrigger - 函数
B使用ActivityTrigger
这是我的工作流程:
-
A被调用,需要做一些业务逻辑 - 除了这个业务逻辑之外,我还需要执行一个可能会失败也可能不会失败的长时间后台任务。我不关心结果,但每次调用
A时我都需要运行此任务。 -
A需要尽快返回,所以我等不及后台任务完成 -
B负责这个后台任务,而A返回
我在网上找到的所有 Durable Functions 示例都显示如下:
await starter.StartNewAsync("BackgroundDurableFunction", data)
我的问题是我不想await 持久功能,但我需要它在后台运行并做它的事情(主要是网络 I/O)。
为了避免等待这个持久功能,我最终采用了这个解决方法:
Task.Factory.StartNew(() => starter.StartNewAsync("BackgroundDurableFunction", data));
这似乎工作得恰到好处,因为我不需要 await 任何东西,但在阅读 The Dangers of Task.Factory.StartNew 之后,我有点害怕这可能是一个危险的解决方案。
所以,问题是:什么是启动持久函数并让它在后台运行而不关心其结果(并且没有关于不等待任务的警告)的正确方法?
【问题讨论】:
标签: c# azure-functions azure-durable-functions