Python 3.x 谷歌云功能已完成,状态:';连接错误';

Python 3.x 谷歌云功能已完成,状态:';连接错误';,python-3.x,google-cloud-platform,google-cloud-functions,github-webhook,Python 3.x,Google Cloud Platform,Google Cloud Functions,Github Webhook,我有一个由Github webhook调用的HTTP云函数(Python 3.7),当事件类型不是pull请求时,它通常(但不总是)带着连接错误退出。当它不进入if块时,它总是干净地退出 下面是函数: def my_func(request): event = request.headers.get("X-GitHub-Event", "unknown") if event != "pull_request": print("This is not a pull

我有一个由Github webhook调用的HTTP云函数(Python 3.7),当事件类型不是pull请求时,它通常(但不总是)带着连接错误退出。当它不进入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错误,消息为“error:cannothandletherequest”


我将它作为一个新功能重新部署到另一个项目中,同样的事情也发生了。有时,对于同一事件,一个函数返回200,另一个函数返回500。知道这里发生了什么吗?谢谢:)

您似乎达到了10MB的极限。这可能就是为什么有些请求是可以的,有些请求不是

您可能想考虑使用谷歌App Engine或者以某种方式限制Github请求/响应的大小。

更新

唯一值得测试的另一件事是尝试为两种请求类型设置if-else条件,以消除出错的可能性

例如:

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而不是云函数,看看完全相同的代码是否可以工作,这将是一件有趣的事情


否则,这将是webhook的一个特定问题,需要在Github webhook处理程序的Github回购协议上报告,或者在最合适的位置报告。

谢谢,我可以复制这个。现在看一看。嗨,你为你的webhook配置了哪种内容类型?它是
application/x-www-form-urlencoded
还是
application/json
?如果您使用
application/json
错误是否持续存在?是application/json这似乎是GCP的间歇性内部问题,我们正在试图找到根本原因。感谢您的耐心。这是一个很好的答案,但不是这里的问题——我现在有它从请求头打印内容长度,我有一个0.03 MB,以连接错误结束。如果超过GCP的限制,我也会感到惊讶,因为它根本就没有发送请求。好的,我更改了if-else条件,如果是
[Type 1]
,不管是什么,它都会返回连接错误。所以Github负载本身似乎没有问题。我稍后会试试GAE,看看那里会发生什么!它似乎在GAE上运行良好,因此我将此标记为答案。谢谢