【问题标题】:How to deploy flask-socketio app to Google Cloud Platform App Engine如何将 flask-socketio 应用程序部署到 Google Cloud Platform App Engine
【发布时间】:2020-09-26 09:06:18
【问题描述】:

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

我的目录结构是这样的:

  • main.py
  • 网站
    • index.html
    • main.js
    • style.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 应用程序。我做错了什么?

【问题讨论】:

    标签: python google-app-engine flask google-cloud-platform flask-socketio


    【解决方案1】:

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

    对于 scale to 0 平台,您可以考虑 Cloud Run,它将很快能够接受定向 websocket。

    【讨论】:

      【解决方案2】:

      我遇到了一个Feature Request,用于实现此功能。

      您可以加注它以使其获得可见性,并将您的电子邮件包含在 CC 部分中,以便接收有关此内容的进一步更新。但是,请记住,由于它是一项功能请求,因此目前没有可用于实施的 ETA。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-01
        • 2020-11-24
        • 2019-04-22
        • 1970-01-01
        • 2019-04-24
        • 2020-05-24
        • 2016-09-15
        • 1970-01-01
        相关资源
        最近更新 更多