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

问题描述

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

我的目录结构是这样的:

  • main.py
  • 网站
    • index.html
    • main.js
    • style.css

我的app.yaml是这样的:

glm::mat4 rotationMatrix = glm::rotate(radians,right);

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

下使用

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

我的main.py部署了flask-socketio应用,如下所示:

runtime: python38

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

  - url: /
    static_dir: website

entrypoint: python main.py

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

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

[...]

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


if __name__ == "__main__":
    run_app()

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

解决方法

App Engine标准不支持websocket。您可以在App Engine Flexible上执行此操作,但是无法缩放为0(这意味着需要额外的费用)

对于要扩展到0平台的情况,您可以考虑使用Cloud Run,它将很快可以接受定向websocket。

,

我遇到了一个Feature Request来实现此功能。

您可以加星标,以便获得可见性,并在 CC 部分中包含您的电子邮件,以便接收有关此信息的进一步更新。但是,请记住,由于这是一项功能请求,因此目前尚无可用于实施的ETA。