谷歌云功能已完成,状态:'connection error'



我有一个由Github webhook调用的HTTP云函数(Python 3.7(,当事件类型不是拉取请求时,它通常(但并非总是(退出并出现连接错误。当它不进入 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。知道这里发生了什么吗?谢谢:)

似乎您正在达到云函数中最大未压缩 HTTP 请求大小的限制,即10MB。这可能是为什么有些请求可以,有些请求不行的原因。

您可能需要考虑使用Google 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 存储库或最适合的位置上报告。

最新更新