У меня есть сценарий использования, который требует, чтобы я запускал некоторые долговременные функции Azure, не заботясь о его результатах, и мне было интересно, правильный ли мой подход.
Это сценарий, в котором я нахожусь:
- Функция
A
использует HttpTrigger
- Функция
B
использует ActivityTrigger
Это мой рабочий процесс:
A
вызывается и нуждается в некоторой бизнес-логике - Наряду с этой бизнес-логикой мне нужно выполнить длинную фоновую задачу, которая может или не может дать сбой.Мне плевать на результаты, но мне нужно запускать эту задачу каждый раз, когда вызывается
A
. A
должен возвращаться как можно быстрее, поэтому я не могу ждать фоназадача для завершения B
выполняет эту фоновую задачу, в то время как A
возвращает
Все примеры Durable Functions, которые я нахожу в Интернете, показывают что-то вроде этого:
await starter.StartNewAsync("BackgroundDurableFunction", data)
Моя проблема в том, что я не хочу await
Durable Function, но мне нужно, чтобы она просто работала в фоновом режиме и выполняла свои функции (в основном, сетевой ввод / вывод).
Чтобы избежать ожидания этой долговременной функции, я использовал этот обходной путь:
Task.Factory.StartNew(() => starter.StartNewAsync("BackgroundDurableFunction", data));
Кажется, это работает правильно, поскольку мне не нужно ничего await
, но после прочтения Опасности Task.Factory.StartNew Я немного боюсь, что это может быть опасным решением.
Итак, вопрос в том, как правильно запустить Durable Function и получить ее.работать в фоновом режиме, не заботясь о его результатах(и без предупреждения о том, что не стоит ждать задания)?