Как реализовать одноэлементное поведение в триггерной функции? - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу, чтобы моя функция Azure посмотрела на папку SFTP и переместила новые файлы в свои родительские папки.

Мои леса выглядят так.

public static class OnMoveFilesHttpTriggered
{
    [FunctionName("OnMoveFilesHttpTriggered")]
    public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}

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

1 Ответ

0 голосов
/ 25 декабря 2018

По замыслу TimerTrigger использует функцию Singleton SDK WebJobs, чтобы гарантировать, что в любой момент времени работает только один экземпляр вашей запущенной функции.Следовательно, нам не нужно ничего делать, чтобы обеспечить его выполнение.

Проверьте wiki для получения подробной информации.

Когда запускается JobHost, для каждого изваш TimerTrigger функционирует как блоб-аренда (Singleton Lock).Эта распределенная блокировка гарантирует, что в любое время будет работать только один экземпляр вашей запланированной функции.Если BLOB-объект для этой функции в настоящее время не сдан в аренду, функция получит аренду и сразу же начнет работать по расписанию.Если аренда блоба не может быть получена, это обычно означает, что запущен другой экземпляр этой функции, поэтому функция не запущена на текущем хосте.

...