Azure Durable Function собирается спать - PullRequest
0 голосов
/ 07 октября 2018

У меня есть длительная функция лазури (2.0), которая вызывает себя для вечной оркестровки, основываясь на этой статье .Код ниже.Это работает нормально и работает примерно 20 минут (скажем, около 50 итераций).Однако по истечении этого времени он засыпает и перестает работать.Если я перехожу на портал Azure и просто нажимаю на приложение функций и щелкаю список функций (т.е. я просто нажимаю вокруг, но не меняю никаких настроек и не останавливаю / не запускаю что-либо), он внезапно «просыпается» и продолжает работать без проблем.В журналах нет ошибок или проблем, только указание неактивного периода, а затем возобновление журналов.Я где-то пропускаю настройку?

public static async Task Run([OrchestrationTrigger] DurableOrchestrationContextBase ctx, ILogger log)
{
    try
    {
        var config = ctx.GetInput<Config>();
        config = await ctx.CallActivityAsync<Config>("GetConfig", null);
        await ctx.CallActivityAsync("ProcessDetails", config);

        var nextCheckpoint = ctx.CurrentUtcDateTime.AddSeconds(config.PollingIntervalInSeconds);

        await ctx.CreateTimer(nextCheckpoint, CancellationToken.None);             
        ctx.ContinueAsNew(config);   
    }
    catch (Exception ex)
    {
        log.LogError($"[Error!][Failed with: {ex.ToString()}]");
        throw;
    }
}

После нажатия кнопки обновления, как описано @davidebbo, проблема все еще сохраняется, см. Журнал ниже.

enter image description here

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

{
  "version": "2.0",
  "extensions": {

    "durableTask": {
      "HubName": "myHub",
      "maxConcurrentActivityFunctions": 10,
      "maxConcurrentOrchestratorFunctions": 1
    }
  },
  "durableTask": {
    "HubName": "myHub",
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 1
  },
  "functionTimeout": "00:10:00"
} 

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

enter image description here

1 Ответ

0 голосов
/ 08 октября 2018

Скорее всего, вы столкнулись с этой проблемой .

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

Тогда вы можете покинуть портал, и он должен продолжать счастливо работать.

...