Функция одиночного веб-задания Azure заблокирована

Я использую веб-задание Azure для непрерывного выполнения некоторой логики. Функция является одноэлементной функцией. Тем не менее, я получаю сообщение "Ожидание блокировки" после попытки запустить эту функцию после перезапуска веб-приложения. Значит ли это, что другой экземпляр этой же функции удерживает блокировку? Как я могу решить это?

Функция:

namespace Ns 
{

    public class Functions
    {
        [Singleton]
        [NoAutomaticTriggerAttribute]
        public static async Task ProcessMethod()
        {
           while(true){
           //process logic here
           await Task.Delay(TimeSpan.FromSeconds(20));}
        }

    }
}

Основная программа:

namespace ns
{   
    class Program
    {      
        static void Main()
        {               
            var host = new JobHost();
            host.RunAndBlock();             
        }
    }
}

Сообщение, которое я получил:

2 ответа

Решение

Согласно описанию атрибута Singleton блокировка устанавливается во время выполнения функции посредством аренды BLOB-объекта.

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

Если у вас есть более одного экземпляра вашего плана обслуживания приложений, это означает, что имеется более одного веб-задания, и, таким образом, на панели инструментов может отображаться состояние блокировки других веб-заданий во время одного из них.

Вы можете просмотреть блокировки аренды BLOB-объектов, созданные в вашей учетной записи хранения.

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

Я отключил производственную функцию в Azure и установил значение listenerlockPeriod на 15 секунд, как описано выше.

Это значительно уменьшило блокировку.

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