如何将 flask-socketio 应用程序部署到 Google Cloud Platform App Engine

How to deploy flask-socketio app to Google Cloud Platform App Engine

我编写了一个 flask-socketio 应用程序,通过 websockets 向网站提供数据。

我的目录结构是这样的:

我的app.yaml是这样的:

runtime: python38

handlers:
  - url: /
    static_files: website/index.html
    upload: website/index.html

  - url: /
    static_dir: website

entrypoint: python main.py

我运行 gcloud app deploy 在目录中,并设法将网站部署到GCP。现在可以在 https://codevis.ew.r.appspot.com/

下使用

但是,flask-socketio 应用程序未 运行,我无法连接到该网站。

我的 main.py 像这样部署 flask-socketio 应用程序:

app = Flask(__name__)
socketio = SocketIO(app, cors_allowed_origins="*")

[...]

def run_app():
    socketio.run(app, debug=True)


if __name__ == "__main__":
    run_app()

在我的 main.js 中,我正在尝试像这样连接到 flask-socketio:

var socket = io.connect("https://codevis.ew.r.appspot.com:5000");

在本地测试 flask-socketio 时(使用 var socket = io.connect("http://127.0.0.1:5000");),一切正常。我只是无法让 GCP App Engine 实际上 运行 flask-socketio 应用程序。我做错了什么?

App 引擎标准不支持 websockets。您可以在 App Engine Flexible 上执行此操作,但不能扩展到 0(这意味着额外费用)

对于规模为 0 的平台,您可以考虑 Cloud 运行,它很快就能接受定向 websockets。

我遇到了 Feature Request 现有的实现此功能的方法。

您可以 星标 它以提高知名度,并将您的电子邮件包含在 CC 部分中,以便接收有关的进一步更新这个。但是,请记住,由于它是一个功能请求,因此目前没有可用于实施的 ETA。