Azure Функции Core Tools - скрытые триггеры или кеширование? - PullRequest
0 голосов
/ 06 марта 2020

Я разрабатываю простую azure функцию с Visual Studio 2019. Я использую Azure Функции Core Tools , так как они запускаются каждый раз, когда я запускаю свой проект.

Функции запускаются по времени и активируются. Каждый раз, когда я снова запускаю свой проект, также запускаются Azure Core Tools, а теперь происходит проводное соединение:

Похоже, что функции не только один раз вызываются из текущей среды выполнения, как и ожидалось, - но также от старых триггеров, работающих еще на заднем плане. Если остановиться в одной из функций, он иногда получает «старые» данные из предыдущих проектов. Я также получаю предупреждения о неизвестных функциях, я переименовал в своих проектах дюжину запусков ранее.

Я очистил / bin / path моего проекта - но старые функции, кажется, живы в чем-то вроде скрытого кэша или скрытое время выполнения основных инструментов Azure.

Есть ли главная остановка или основная очистка, которую я могу запустить перед каждым новым запуском моего проекта в Azure Основных инструментах функций?

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

1 Ответ

1 голос
/ 06 марта 2020

Если вы используете Durable Framework (на основе вашего предыдущего вопроса), в противном случае вам нужно удалить артефакты хранилища, иначе он выполнит предыдущие незавершенные выполнения.

Есть несколько способов сделать это:

[FunctionName("PurgeInstanceHistory")]
public static Task Run(
    [DurableClient] IDurableOrchestrationClient client,
    [TimerTrigger("0 0 12 * * *")]TimerInfo myTimer)
{
    return client.PurgeInstanceHistoryAsync(
        DateTime.MinValue,
        DateTime.UtcNow.AddDays(-30),  
        new List<OrchestrationStatus>
        {
            OrchestrationStatus.Completed
        });
}

вы также можете использовать для него CLI:

func durable delete-task-hub --task-hub-name UserTest

В качестве другого варианта, вы можете вручную удалить артефакты, используя Microsoft Azure Storage Explorer и подключив его к эмулятору локального хранилища. :

enter image description here

...