【发布时间】:2019-12-20 18:06:46
【问题描述】:
我创建了一个接受 HTTP 触发器的小型 Python 程序并将其上传到 Google Cloud Functions。当我发出正文小于 10KB 的 POST 请求时,它工作正常。
但是,当我超过此值时,该函数无法工作并在其响应中发送错误代码 413(请求实体太大)。有什么我可能会丢失的吗?当我阅读配额文档页面时,它说 Google Cloud Functions 应该允许高达 10MB 的请求,这显然比我发送的要多得多。
谢谢。
编辑:
解析POST数据的Python代码如下:
def html_switcher_test(request):
request_args = request.args
if request_args:
report_html = BeautifulSoup(request.args['data'], 'lxml')
下面提供了显示错误的 Postman 请求屏幕截图:
【问题讨论】:
-
您对请求实际上是 10K 的信心有多大?对于想要发送 > 10MB 但到目前为止不担心 10K 的人来说,Stackoverflow 似乎充满了问题。
-
您能否发布导致问题的 Python 代码片段?此外,如果您可以访问调试器,请尝试查找
body变量的大小,正如@Kolban 所说。 -
为了确保我为请求提供了正确的尺寸,我使用了 Postman。我只是发送一个 HTML 文件作为函数处理的消息内容。为了使用 Postman 执行此操作,我复制了文件的内容(例如大小为 17KB),并将其放入 POST 请求中。
-
我已将 Python 代码解析器添加到问题中(以及 Postman 屏幕截图)。就像我说的,使用较小的 POST 大小(例如 7KB),一切正常。
-
我通过创建定义 here 的 hello world(在 python 中)函数重现了这个问题。然后,您需要发送一个 post 请求,如下所示:
requests.post('api/hello_http',data={'data':data}),其中 data 变量包含大于 15KB 的文本负载。这将发出错误消息“错误:无法处理请求”。如果将此命令切换为requests.post('api/hello_http', json={'data':data}),一切正常。
标签: python http post google-cloud-functions http-status-code-413