У меня есть проект, который обрабатывает файлы продуктового фида в моей системе. Для одного файла фида весь процесс занимает около 40-50 минут. Теперь я создал WebJob
для обработки изображений из канала и отправляю URL-адреса изображений из моего первого проекта в WebJob
, создав клиент хранилища. Когда у меня есть это в моем проекте, время обработки значительно увеличилось, поэтому я попытался использовать его с Task.Run
, чтобы использовать Fire and Forget
подход, но все же даже с этим общим временем процесса сейчас около 2 часов.
Вот как я вызываю свой метод создания очереди хранилища.
if (insertImages)
{
#pragma warning disable 4014
Task.Run(async () => { await new QueueUtility().CreateQueueMessage(picture); }).ConfigureAwait(false);
#pragma warning restore 4014
}
А вот мой код для создания сообщения в очереди
public async Task CreateQueueMessage(Picture picture)
{
Utility.Log log = new Utility.Log();
await AddQueueMessage(picture.url);
}
public async Task AddQueueMessage(string queueMessage)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("ImagekWebJobStorage"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("imagekqueue");
// Create the queue if it doesn't already exist
queue.CreateIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage(queueMessage);
queue.AddMessage(message);
}
Я не понимаю, почему мое время обработки удвоилось, и я тоже не могу найти способ обойти это. Любые идеи, которые помогли бы мне решить эту проблему, были бы действительно полезны.