Как установить бесконечное время ожидания для приложения Azure Function v2.0 - PullRequest
0 голосов
/ 23 октября 2018

У меня очень долго работающий процесс, который размещается с помощью приложения-функции Azure (хотя это не рекомендуется для долго выполняющихся процессов), ориентированного на v2.0.Раньше он был нацелен на среду выполнения v1.0, поэтому я не столкнулся с проблемой тайм-аута функции.

Но теперь, после обновления среды выполнения до цели v2.0, я не могу найти способ установить время ожидания функции.до бесконечности, как это было в случае v1.0.

Может кто-нибудь, пожалуйста, помогите мне в этом?

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

Из ваших комментариев выглядит, как будто вы разбиваетесь на более мелкие функции или используете что-то, отличное от функций, в данный момент вам не подходит.В таком случае, AFAIK, вы все равно можете делать это с v2.0, если вы готовы использовать «План обслуживания приложений».

Максимальный предел в 10 минут применяется только к «Плану потребления».

enter image description here

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

Вы можете использовать настройку «Всегда включено».Читайте об этом в Microsoft Docs здесь.

Масштаб функций Azure и хостинг

enter image description here

Также документация четкозаявляет, что значение по умолчанию для тайм-аута с планом App Service составляет 30 минут, но его можно установить неограниченным вручную.

Изменения в функциях и функциях

enter image description here

ОБНОВЛЕНИЕ

Из нашего обсуждения в комментариях, поскольку нулевое значение не работает для вас, как это было в версии 1.x, пожалуйста, попробуйтеполностью отключив настройку «functionTimeout».

Я натолкнулся на 2 разных сообщения SO, в которых упоминается что-то похожее, и в тексте документации Microsoft также говорится, что реального ограничения нет.Вот ссылки на SO сообщения, с которыми я сталкивался:

0 голосов
/ 24 октября 2018

Один из способов сделать это - реализовать Вечные оркестровки из Durable Functions .Это позволяет реализовать бесконечный цикл с динамическими интервалами.Конечно, вам нужно немного изменить свой код, добавив поддержку функции остановки / запуска в любое время (вы должны передавать состояние между вызовами).

[FunctionName("Long_Running_Process")]
public static async Task Run(
    [OrchestrationTrigger] DurableOrchestrationContext context)
{
    var initialState = context.GetInput<object>();
    var state = await context.CallActivityAsync("Run_Long_Running_Process", initialState);

    if (state == ???) // stop execution when long running process is completed
    {
        return;
    }

    context.ContinueAsNew(state);
}
0 голосов
/ 23 октября 2018

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

...