У меня есть задача облачного сервиса, которая выполняется каждые 5 минут между запланированными часами. Я столкнулся с проблемой зависания экземпляра роли в какой-то момент, и я подозреваю, что это связано с одной работой, которая может длиться вечно, чтобы сделать экземпляр роли занятым.
Я думал о добавлении таймаута, чтобы остановить задачу taht если это займет больше времени для обработки. Однако, когда эта задача выполняется локально с эмулятором Azure, она работает нормально, но при развертывании в Azure она задерживает время ожидания, даже не выполняя ни одного куска кода.
Ниже приведен базовый c код для справки
protected void ProcessChunk(IEnumerable<SparkPostEmailUpdateQueueItem> chunk)
{
itemsInChunk = 0;
// there are a number of batch's in a chunk. Process each and wait for them all to finish
var work = chunk.Select(c => ProcessEventBatch(c))
.ToArray();
if(!Task.WaitAll(work, 1800000))
{
logger.Trace("Timeout elpased for SparkPost event batch");
}
NumberOfChunksProcessed++;
ExecuteItemsProcessed += itemsInChunk;
Ниже приведены azure журналы