Как обрабатывать долго выполняющиеся задания в службе приложений Azure? - PullRequest
0 голосов
/ 11 января 2019

Я довольно новичок в хостинге в Azure. У меня есть веб-приложение .net 4.6, работающее в Azure как служба приложений.

Решение содержит некоторые действия, которые выполняются в течение длительного времени. Они останавливаются через 230 секунд, что похоже на Azure.

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

Я также использую хранилище Azure в своем решении.

Моя проблема заключается в том, что если я использую функции Azure v1 (NuGet Microsoft.NET.Sdk.Functions v1.0.24), я вынужден использовать версию Newtonsoft.Json = 9.0.1 Между тем для NuGet WindowsAzure.Storage требуется версия Newtonsoft.Json> = 10.0.2

Это ломает меня.

Затем я опробовал функции Azure v2. Но он поддерживает только .Net Core, что не подходит для меня в этом проекте.

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

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

1 Ответ

0 голосов
/ 11 января 2019

Убедитесь, что в вашем hosts.json не настроено время ожидания.

"functionTimeout": "00:05:00"

Полные параметры конфигурации для V1 и V2 описаны здесь .

В плане потребления максимальное время ожидания составляет 10 минут. В плане обслуживания приложения он может быть неопределенным (но имеет смысл ввести ограничение, даже если это всего лишь 1 или 2 часа).

Если вы хотите нарушить свою функциональность, вы можете найти подходящий шаблон Durable Functions .

В конфликте с Newtonsoft проверьте, можете ли вы решить эту проблему с помощью перенаправления привязки .

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-9.9.0.0" newVersion="10.0.2.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...