Функция одиночного веб-задания 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 секунд, как описано выше.
Это значительно уменьшило блокировку.