Каков срок службы приложения функции Azure?

#c# #azure #azure-functions

Вопрос:

Предполагать. У меня есть статическая переменная dtTime, которая имеет значение DateTime.Теперь, когда он только запустился. и у меня есть код для вывода dtTime в файл журнала. Я хотел бы знать, изменится ли переменная dtTime? и как часто это меняется?

 static DateTime dtTime = DateTime.Now;
 

Комментарии:

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

Ответ №1:

Я не думаю, что вам нужно думать о сроке службы приложения Здесь.

Независимо от того, какое приложение функции вы развертываете, оно абстрагируется, а инфраструктура управляется Azure. Время сервера Azure по умолчанию работает по UTC.

Рекомендуется использовать время UTC в контексте сервера, вы можете найти список поддерживаемых часовых поясов here .

Ответ №2:

Я предполагаю, что вы говорите о постоянстве вашего токена в статической переменной.

Что вы можете сделать, так это при первом получении токена сохранить токен, а также дату истечения срока действия (минус 5 минут?) в статическую переменную.

Затем для каждого выполнения функции проверьте, является ли поле маркера пустым или текущее время > время истечения срока действия. Если нет, то используйте статическое поле. Если да, то принесите новый токен.

Предполагая, что вы находитесь в плане потребления, если функция не активна, она выключит сервер примерно через 20 минут(приблизительно). Когда появится новый триггер, новый сервер запустится с пустыми статическими переменными. Приведенный выше псевдокод гарантирует, что вы обновите свой токен в таком случае.

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

Для .NET некоторый простой псевдокод будет выглядеть так

 #r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

private static string accesstoken;
private static HttpClient httpclient = new HttpClient();

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    string responseMessage;
    if (accesstoken == null){
//      Fetch your new token here and store in accesstoken
        responseMessage = "Stored access token in Cache";
        log.LogInformation($"Stored in Cache :{accesstoken}");
    }
    else
    {
        log.LogInformation($"Got data from cache. {accesstoken}");  
        responseMessage = "Retrieved data from cache."; 
    }

    return new OkObjectResult(responseMessage);
}
 

Для Python вы можете обратиться к кэшированию в python

Ответ №3:

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