猿问

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

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

我的目录结构是这样的:

  • main.py

  • 网站

    • 索引.html

    • main.js

    • 样式.css

我的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 应用程序。我究竟做错了什么?


慕尼黑5688855
浏览 98回答 2
2回答

MMTTMM

App Engine 标准不支持 Websocket。您可以在App EngineFlexible上执行此操作,但无法扩展到 0(这意味着额外的成本)对于 0 规模的平台,您可以考虑 Cloud Run,它将很快能够接受定向 Websocket。

慕丝7291255

我遇到了一个用于实现此功能的功能请求。您可以给它加注星标,以便它获得可见性,并将您的电子邮件包含在“抄送”部分中,以便接收有关此问题的进一步更新。但是,请记住,由于它是功能请求,目前尚无可用于实施的预计时间。
随时随地看视频慕课网APP

相关分类

Python
我要回答