2

我正在尝试通过 Google Cloud 的 App Engine Standard 部署基于 Quart 的 python 应用程序。但是,我不断收到以下错误:

Traceback (most recent call last):
  File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 284, in handle
    keepalive = self.handle_request(req, conn)
  File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 333, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
TypeError: __call__() missing 1 required positional argument: 'send'

我知道 Quart 是一种 ASGI 解决方案,而 Google App Engine 是一种无服务器设置。将 quart 部署到 AWS Lambda 的建议之一是使用 Magnum。这也适用于 Google Cloud App Engine 吗?

任何帮助,将不胜感激。

4

2 回答 2

0

来自https://github.com/pgjones/quart/issues/68

Quart 是一个 ASGI 框架,而不是 WSGI 框架,这意味着它不能与 serverless 一起使用。它可以与Mangum一起使用,它是无服务器的 ASGI 替代方案。

这也意味着 Quart 将不兼容 App Engine、Cloud Functions 等。

但是,它可以通过支持 ASGI 的 HTTP 服务器(例如Uvicorn )与Cloud Run很好地配合使用。

于 2019-12-11T00:11:47.067 回答
0

Magnum是一个适配器,用于将 ASGI 应用程序与 AWS Lambda 和 API 网关一起使用,并且未针对 Google GCP 进行测试。

我建议遵循@di 的建议,将 Uvicorn 与 Cloud Run 一起使用。

于 2019-12-11T08:32:06.217 回答