Функция Azure не запускается - Триггер хранилища BLOB-объектов

У меня есть простая функция Azure, которая запускается при добавлении нового элемента в хранилище BLOB-объектов.

Функция читает новый файл JSON, загруженный в хранилище BLOB-объектов, и загружает информацию в базу данных.

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

Кажется, он работает только тогда, когда я перезапускаю приложение или когда открываю Функции Azure в браузере.

Некоторые дополнительные данные:

Я добавляю некоторую информацию, которая, на мой взгляд, может быть актуальной, но я новичок в функциях Azure, поэтому, если есть более важная информация, которую я упускаю, не стесняйтесь спрашивать об этом. У меня Application Insights тоже отслеживает приложение.

Версия выполнения: 3.0.15571.0

Режим: потребление

1. Проверка Application Insights

Проверял запросы за последние 3 дня. Он проработал те же часы, что и вчера, пытаясь понять, в чем дело. Было много запросов, потому что он догонял все старые файлы, которые не были обработаны: введите описание изображения здесь

Последний запрос был вчера, как мы можем проверить в запросе:  введите описание изображения здесь

2. куду чек

Журналы, которые я просматриваю, - это ожидаемые, которые я закодировал в свою функцию, некоторые неожиданные, значения которых я не знаю, и некоторые ошибки в моем соединении SQL:

Отображаемая информация следующая:

2021-04-26T17:50:23.377 [Information] Executing 'FunctionSaveOnBDD' (Reason='New blob detected: containerforiotcentral/c618a003-9934-4b25-a674-cd709b6afb07/4/2021/03/27/11/22/vliwcspeyze7a', Id=34a100dc-135f-41ed-ba7b-209d85f28b63)
2021-04-26T17:50:23.377 [Information] Trigger Details: MessageId: 0113b888-75f7-4cb8-b9cd-562255e34c56, DequeueCount: 1, InsertionTime: 2021-04-26T17:39:03.000+00:00, BlobCreated: 2021-03-27T11:23:53.000+00:00, BlobLastModified: 2021-03-27T11:23:53.000+00:00
2021-04-26T17:50:23.378 [Information] Executing 'FunctionSaveOnBDD' (Reason='New blob detected: containerforiotcentral/c618a003-9934-4b25-a674-cd709b6afb07/4/2021/03/27/11/21/vliwcspeyze7a', Id=5e7ee513-346d-45d4-a8a4-b2f981ed470a)
2021-04-26T17:50:23.378 [Information] Trigger Details: MessageId: 7525894a-ba7c-47b9-802a-54faa60a603a, DequeueCount: 1, InsertionTime: 2021-04-26T17:39:03.000+00:00, BlobCreated: 2021-03-27T11:22:53.000+00:00, BlobLastModified: 2021-03-27T11:22:53.000+00:00
2021-04-26T17:50:23.378 [Information] Executing 'FunctionSaveOnBDD' (Reason='New blob detected: containerforiotcentral/c618a003-9934-4b25-a674-cd709b6afb07/4/2021/03/27/11/23/vliwcspeyze7a', Id=e3d0ca32-2d07-4b18-8bb9-4edda7de68b5)
2021-04-26T17:50:23.378 [Information] Trigger Details: MessageId: b8bbd557-9710-4cea-81f7-7a243aa96111, DequeueCount: 1, InsertionTime: 2021-04-26T17:39:03.000+00:00, BlobCreated: 2021-03-27T11:24:53.000+00:00, BlobLastModified: 2021-03-27T11:24:53.000+00:00
2021-04-26T17:50:23.379 [Information] Executed 'FunctionSaveOnBDD' (Succeeded, Id=704c2ace-9688-40da-8aa7-a19190ece7c1, Duration=702ms)
2021-04-26T17:50:23.399 [Information] C# Blob trigger function Processed blob
 Name:c618a003-9934-4b25-a674-cd709b6afb07/4/2021/03/27/11/04/vliwcspeyze7a 
 Content: telemetry

Где последняя строка - это журнал, который записывает выполнение функции. Я также получаю некоторые ошибки в моем соединении SQL, которых не было, когда я его тестировал:

2021-04-26T17:50:23.270 [Information] Microsoft.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 66) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite)
   at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at AzureFunctionBlobTrigger0103DEF.BlobTriggersaveonBDD.Run(Stream myBlob, String name, ILogger log) in C:\Users\Tere\source\repos\AzureFunctionBlobTrigger0103DEF\BlobTriggersaveonBDD.cs:line 52
ClientConnectionId:f46c83df-9566-4af9-866e-12728d39b646
Error Number:1205,State:18,Class:13
ClientConnectionId before routing:3f74ce3e-43a1-4c9c-8ddb-8e9c9d8610a9
Routing Destination:af4408adfd33.tr16.westeurope1-a.worker.database.windows.net,11040

person Teresa Rey Alonso    schedule 26.04.2021    source источник


Ответы (1)


Кажется, он работает только тогда, когда я перезапускаю приложение или когда открываю Функции Azure в браузере.

Такой ситуации не должно быть. Как это определить?

Воспользуйтесь двумя способами ниже, чтобы проверить:

1. Используйте Application Insights:

Перейдите в Application Insights и запустите:

requests

И не забудьте установить временной диапазон:

введите описание изображения здесь

2, используйте куду:

Непосредственно перейдите к https://yourfunctionappname.scm.azurewebsites.net/DebugConsole и щелкните \home\LogFiles\Application\Functions\Function\yourtriggername

Пожалуйста, проверьте логи, может быть, что-нибудь найдешь.

person Bowman Zhu    schedule 27.04.2021
comment
Спасибо за помощь! Я проверил то, что вы предложили, и добавил это в основной пост. Я нашел интересную информацию. Похоже, я получил много запросов за короткий промежуток времени, и, возможно, мой триггер не успевает? Это не объясняет, почему он работает правильно в течение пары часов, только когда я его проверяю, подумал. - person Teresa Rey Alonso; 27.04.2021