Облачная функция Google завершила со статусом: «ошибка соединения» - PullRequest
1 голос
/ 24 января 2020

У меня есть функция HTTP Cloud (Python 3.7), вызываемая веб-крючком Github, и она обычно (но не всегда) завершается с ошибкой соединения, когда тип события не является запросом на извлечение. Он всегда выходит чисто, когда не go внутри блока if.

Вот функция:

def my_func(request):
    event = request.headers.get("X-GitHub-Event", "unknown")
    if event != "pull_request":
        print("This is not a pull request")
        return "This is not a pull request", 200
    return "OK", 200

В журналах он отображается как:

"This is not a pull request"
"Function execution took 11 ms, finished with status: 'connection error'" 

А на стороне Github ответом является ошибка HTTP / 500 с сообщением «Ошибка: не удалось обработать запрос».

Я повторно развернул ее как новую функцию в другом проекте и происходит то же самое. Иногда одна функция возвращает 200, а другая возвращает 500 для того же события. Есть идеи, что здесь происходит? Спасибо:)

1 Ответ

0 голосов
/ 28 января 2020

Кажется, что вы выходите за пределы Максимальный размер несжатого HTTP-запроса в облачных функциях , равный 10 МБ . Это может быть причиной того, что некоторые запросы в порядке, а некоторые нет.

Возможно, вы захотите использовать Google App Engine или каким-либо образом ограничить размер запроса / ответа от Github.

ОБНОВЛЕНИЕ :

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

Например:

def my_func(request):
    event = request.headers.get("X-GitHub-Event", "unknown")
    if event == "[Type1]":
        print("This is [Type1]")
        return "This is not a pull request", 200
    elif event == "[Type2]":
        print("This is [Type2]")
    return "OK", 200

Было бы интересно посмотреть, будет ли точно такой же код работать с использованием GAE вместо облачных функций

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

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