Действие функции Azure запускается автоматически после нажатия кнопки «Выполнить» или «Отладить локально»

У меня есть устойчивые функции Azure с триггером HTTP на C#, и я использую Азурите в качестве локального хранилища для этой функции. Поэтому, когда я запускаю или отлаживаю проект локально, функции активности запускаются автоматически без какого-либо HTTP-запроса. Я прекращаю отладку, затем запускаю ее снова, проблема исчезает. Второй раз этого не происходит. Однако это стало раздражать. Каждый раз, когда мне приходится начинать, останавливаться и снова начинать, если я хочу отладить. Может быть, где-то есть какое-то кэширование, которое автоматически запускает функции активности, я не знаю. Вот моя структура:

  1. Функция стартера
public static async Task<HttpResponseMessage> Run(
  [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "orchestrators/{functionName}")] HttpRequestMessage req,
  [DurableClient] IDurableClient starter,
  string functionName,
  ILogger log)
  {
  1. Оркестратор
[FunctionName(nameof(SynchronizeAllCoursesOrchestrator))]
public static async Task<HttpResponseMessage> SynchronizeAllCoursesOrchestrator([OrchestrationTrigger] IDurableOrchestrationContext context)
{
   var input = context.GetInput<FunctionInput>();
   return await context.CallActivityAsync<HttpResponseMessage>(nameof(SynchronizeAllCourses), input);
}
  1. Функция активности
[FunctionName(nameof(SynchronizeAllCourses))]
public async Task<HttpResponseMessage> RunAsync([ActivityTrigger] IDurableActivityContext context, ILogger log)
{

Поэтому всякий раз, когда я нажимаю «Пуск/отладка», функция активности запускается немедленно. Затем мне приходится останавливаться и все время перезапускаться, чтобы он прослушивал запросы, а не запускался немедленно. Как сделать так, чтобы он не запускался сразу?

Возможно, что-то застряло в таблицах/очередях, используемых устойчивыми функциями, и оно продолжает повторять попытки. Проверьте свой эмулятор хранилища; вы можете удалить таблицы/очереди/контейнеры больших двоичных объектов, и устойчивые функции создадут их заново при запуске.

juunas 11.01.2023 10:25

Я уже проверил это. Но в Азурите нет команды для аннулирования локальных кешей или очистки хранилища/очереди/BLOB-объектов.

Serhat 11.01.2023 10:32

Вы также можете использовать Azure Storage Explorer для проверки содержимого и удаления данных: azure.microsoft.com/en-us/products/storage/storage-explorer

juunas 11.01.2023 10:41

Установил Azure Storage Explorer и понял, что Азурите создает много ненужного и не удаляет его после использования. Так что каким-то образом все эти вещи подбирались (вспоминались). Спасибо @juunas за ответ.

Serhat 11.01.2023 11:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря ответу @juunas выше я смог решить проблему. Я установил Azure Storage Explorer после локального запуска Azurite и понял, что Azurite создает/сохраняет много данных и не удаляет их при остановке. Поэтому я вручную прошел и очистил все таблицы, и он начал вести себя соответственно.

Короче говоря, достаточно просто очистить очередь testhubname-workitems перед запуском. Тогда у вас больше не будет проблем.

Редактировать дополнительную информацию:

После дальнейших предложений от @juunas. Я установил для своего hubName значение «SerhatsDurableFunctionsHub», и я смог переименовать имена хранилищ на:

Вот как выглядит мой файл host.json:

Таким образом, эти вещи «TestHub...» созданы для «концентратора задач» устойчивых функций, в котором хранится текущее состояние оркестровки, а также обрабатывается связь между оркестраторами и действиями. «TestHubName» используется по умолчанию, если ничего не указано. Я рекомендую вам установить extensions -> durableTask -> hubName на что-то другое в host.json, если вы работаете над разными проектами устойчивых функций на одном компьютере.

juunas 11.01.2023 12:33

Другие вопросы по теме

Маркер доступа Azure AD клиентского приложения не содержит утверждений о ролях
Значения параметра запроса по умолчанию в привязках функций Azure
Может ли функция Azure читать сведения о пользователе AAD без разрешения приложения (только делегированное разрешение, разрешенное организацией)
Как настроить различные параметры предварительной выборки с помощью ServiceBusTrigger в функции Azure
Как добавить расширение LogAnalyticsWorkSpace к виртуальной машине с помощью Python SDK в Azure
Azurerm_linux_function_app Не удалось создать общий файловый ресурс хранилища — проверьте, доступна ли учетная запись хранения — azurerm_private_endpoint
Запускайте асинхронные методы параллельно, но убедитесь, что возвращаемые данные содержат данные
Как создать функцию Azure, которая была перенесена с Javascript на сборку Typescript?
Как заблокировать учетные записи хранения в Azure с помощью Python SDK
Пользовательское промежуточное ПО для проверки подлинности в функциях .NET6 Azure возвращает код состояния 204 вместо 401