Имеет ли значение метод метода Azure? - PullRequest
2 голосов
/ 14 мая 2019

В настоящее время я занимаюсь разработкой некоторых функций C # Azure.Соглашение об именах, которое я использую, это Process[ThingIWantToProcess]() примерно так ...

public static void ProcessRequest([TimerTrigger("00:00:10", RunOnStartup = true, UseMonitor = false)] TimerInfo timer, ILogger logger)
{
     // Do function things
}

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

Консоль, как локальная, так и консоль Куду, говорит «Найдено следующие функции:» и отображает все ожидаемые функции;однако эти функции никогда не запускаются.

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

Так что вместо ProcessRequest теперь это было ProcessRequest1, и функция сработала успешно.Я изменил имя несколькими различными способами, и все они работали, но когда я вернулся на ProcessRequest, он снова перестал работать.

Я не могу найти ничего, объясняющего это поведение в документах или поиске в Интернете.и я обеспокоен, что это произойдет снова во время будущего обслуживания.

Кто-нибудь еще испытал это, и если да, можете ли вы указать мне какое-то объяснение?

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

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

Чтобы решить эту проблему, я предлагаю просто создать отдельную учетную запись хранения для вашей работы , и она должна работатькак есть !!!

Для получения дополнительной информации, пожалуйста, посетите: https://github.com/Azure/azure-webjobs-sdk/issues/614

1 голос
/ 04 июня 2019

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

Функции Azure похожи на метод C #:

Как вы знаете, Azure functions похожи на метод C #.Так что здесь хорошо следовать соглашению об именовании методов C #.

Но azure functions Предлагаемый шаблон, подобный этому <name>-func

Пример azureexample-func

 public static class AzureFunctionExampleClass
    {
        [FunctionName("azureexample-func")]

        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Read Request Body
            var content = await new StreamReader(req.Body).ReadToEndAsync();

            //Extract Request Body and Parse To Class
            Users objUsers = JsonConvert.DeserializeObject<Users>(content);

            //As we have to return IAction Type So converting to IAction Class Using OkObjectResult We Even Can Use OkResult
            var result = new OkObjectResult(objUsers);
            return (IActionResult)result;
        }
    }

Примечание: Вы даже можете использовать PascalCase формат, такой как AzureExampleFunc.Как нет таких строгих привязок.

Корпус: Case insensitive

Функциональные допустимые символы: Alphanumeric and hyphen

Длина функции: 1-60

Ключевые слова должны пропускать:

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

Сделать функцию читабельной:

Хотя функция не ограничивает обязательное соглашение об именах, но рекомендуется использовать читаемое имя, чтобычтобы было легко понять, что он делает.

Если у вас все еще есть вопрос относительно Azure naming convention, вы можете проверить это документы

Спасибо и счастливого кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...