Хобрук: Ваш путь к мастерству в программировании

Завершение всех устойчивых функций функционального приложения / учетной записи хранилища

Мы хотим перенести все выполняемые в настоящее время устойчивые функции из приложения-функции в новое разработанное приложение-функцию.

Состояния активных долговременных функций хранятся в таблице. Это означает, что мы просто можем запустить новую долговечную функцию, и она сможет определить ее состояние. Но это означает, что мы должны остановить множество выполняющихся в настоящее время устойчивых функций.

Наша идея заключалась в том, чтобы удалить таблицы DurableFunctionsHubHistory и DurableFunctionsHubInstances в связанной учетной записи хранения. С этой учетной записью хранения не связаны никакие другие приложения-функции, которые используют надежные функции.

Безопасно ли это делать или есть лучший способ остановить большое количество надежных функций?


Ответы:


1

вопрос в том, хотите ли вы остановить функции или функции, работающие в очереди? если вы просто хотите остановить все существующие функции и использовать новые перенесенные функции

быстрый способ - использовать функции отключения, вы можете сделать это на портале Azure или в интерфейсе командной строки, используя приведенный ниже пример.

az functionapp config appsettings set --name <myFunctionApp> \
--resource-group <myResourceGroup> \
--settings AzureWebJobs.QueueTrigger.Disabled=false

у вас также могут быть некоторые вспомогательные долговечные функции, которые помогут вам узнать о текущем состоянии большого количества функций, если вам нужно их остановить.

 var RunningStateFilter = new OrchestrationStatusQueryCondition()
                {
                    RuntimeStatus = new[]
                    {
                        OrchestrationRuntimeStatus.Running
                    },
                    CreatedTimeFrom = DateTime.UtcNow.Subtract(TimeSpan.FromDays(7)),
                    CreatedTimeTo = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)),
                    PageSize = 100
                };

                OrchestrationStatusQueryResult result = await client.ListInstancesAsync(RunningStateFilter, CancellationToken.None);
                foreach (DurableOrchestrationStatus instance in result.DurableOrchestrationState)
                {
                    NoOfInstance += 1;
                    await client.TerminateAsync(instance.InstanceId, reason);
                }
04.12.2020
  • Но это оставит работу долговечных функций. Мне не нравится идея иметь много запущенных экземпляров, которые никогда не завершатся. Я чувствую, что это может укусить меня при следующей миграции или во время общих работ по техническому обслуживанию ... 08.12.2020
  • вы можете создать несколько вспомогательных функций, чтобы отслеживать их в процессе, я добавил несколько примеров кода, чтобы помочь вам в этом, вы также можете поискать github.com/scale-tone/DurableFunctionsMonitor, чтобы узнать, может ли это помочь и вам. 11.12.2020
  • Извините, ваш последний ответ был получен слишком поздно. В итоге я сделал то, что предлагал, и удалил Tables DurableFunctionsHubHistory и DurableFunctionsHubInstances и снова создал их пустыми. Это сработало, как ожидалось, и я пока не обнаружил никаких проблем. 13.12.2020
  • Новые материалы

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..