HTTP-запрос приложения логики Azure 500

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

У меня есть простой HTTP-прослушиватель (когда HTTP-запрос получен), чем он должен отправить другой HTTP-запрос GET какой-то службе и отправить ответ первому вызывающему. Выглядит это так: http://imgur.com/a/9fpfu

Теперь все работает отлично, пока я не отправлю неправильные данные или пока приложения Logic не получат ошибку HTTP 500 из HTTP-запросов.

Затем приложение Logic зависает в HTTP-запросе около 1 минуты и не работает. Ответ после этого никогда не отправляется.

Как я могу переслать ответ, который получает приложение логики, запрашивающей стороне, запросившей приложение логики?


person onefox    schedule 14.09.2016    source источник


Ответы (3)


Logic Apps по умолчанию повторяет любой неудачный запрос 4 раза, поэтому вы видите увеличенное время выполнения, когда служба http возвращает ошибку 5xx. Вы можете настроить это поведение с помощью настраиваемой политики повтора. См. Больше https://azure.microsoft.com/en-us/updates/customizable-retry-policies-in-logic-apps/

По умолчанию шаги приложения логики зависят от успеха любых зависимых действий. Это приводит к тому, что ваше действие ответа пропускается при сбое действия http.

У вас есть несколько вариантов решения этой проблемы:

  1. В представлении кода вы можете обновить свойство runAfter, чтобы действие выполнялось независимо от того, выполнено ли действие http или нет.

    "runAfter": { "Condition": [ "Succeeded", "Failed" ] }
    
  2. Добавьте условие в свои приложения логики в код состояния http действия http, а затем создайте специальное действие Response для каждого случая.

person Szymon Wylezol    schedule 14.09.2016
comment
Вы имеете в виду ссылку справа. При попытке добавить retryPolicy возникает следующая ошибка: не удалось найти член retryPolicy в объекте типа FlowTemplateAction. Путь 'properties.definition.actions.HTTP.retryPolicy'. Это мой код (условие уже выполнено и не выполнено): pastebin.com/igfprKFT Также для ошибок 4xx он работает нормально, и только для 5xx требуется 1 минута до тайм-аута. imgur.com/a/0nBPK По истечении времени ожидания ответ не запускается - person onefox; 16.09.2016
comment
Похоже, вы указываете retryPolicy прямо под действием. Он должен находиться под свойством input. Что касается сбоев, приложения Logic Apps повторяют только периодические сбои (поэтому коды состояния 5xx), коды состояния 4xx обрабатываются как детерминированные сбои и поэтому не повторяются. - person Szymon Wylezol; 16.09.2016
comment
Могу ли я перезаписать поведение 4-х попыток перезапуска? Есть ли место для этого в конструкторе приложений логики или мне нужно редактировать json? - person user1700890; 12.03.2021

Вы можете обновить политику повтора и настройку тайм-аута действия Http как

введите здесь описание изображения

person Sonu Kumar    schedule 07.12.2017
comment
Добавьте описание изображения, которое вы связали. - person CXJ; 07.12.2017

Как вы знаете, 500 - это неизвестная ошибка, и, следовательно, движок logicapp перестает обрабатывать любые действия, которые продолжают выдавать 500 даже после повторной попытки. Для этого конкретного случая вам необходимо настроить правило диагностики logicapp «Не удалось выполнить действия» / «Не удалось выполнить запуск». В правиле вы можете настроить отправку электронного письма и / настроить веб-перехватчик для реакции на событие.

person TusharJ    schedule 14.09.2016
comment
Когда я добавляю еще один ответ, ничего не меняется, также мой код работает с ошибками 4xx, но не с 5xx ... - person onefox; 16.09.2016
comment
Как вы знаете, 500 - это неизвестная ошибка, и, следовательно, движок logicapp перестает обрабатывать любые действия, которые продолжают выдавать 500 даже после повторной попытки. Для этого конкретного случая вам необходимо настроить правило диагностики logicapp. Действия не выполнены / Выполнены не удалось. В правиле вы можете настроить отправку электронного письма и / настроить веб-перехватчик для реакции на событие. - person TusharJ; 19.09.2016