繁体   English   中英

部署在 Google App Engine 标准上的 Dash 应用不断刷新

[英]Dash app deployed on Google App Engine standard continuously refreshing

我目前正在尝试使用 App Engine 的标准环境部署 Python Dash 应用程序。 当应用程序运行时,它会稳定几秒钟,然后完全刷新(即它会闪烁到一个空白的加载屏幕,然后再次呈现)。

刷新和回调之间的所有用户输入都将丢失并再次运行。 这在应用程序运行时重复。

同一个应用程序在本地运行时表现正常,这让我认为循环回调形成反馈循环不是问题。 此外,GCP 应用程序日志中似乎没有任何错误。

app.yaml 的内容是:

runtime: python38
instance_class: F4
service: myapp
entrypoint: python app.py
service_account: myproject@appspot.gserviceaccount.com

app.py 的内容是:

from src.content import app

server = app.server


def run():
    app.run(host="0.0.0.0", port="8080", debug=True)


if __name__ == '__main__':
    run()

通过运行gcloud app deploy -v myapp_v1.

任何的建议都受欢迎。

您正在使用开发服务器运行 Dash,它使用 Flask 的开发服务器,并且不打算用于 Development ,因此 Dash 也是如此。

我的猜测是,这与使用debug=True运行开发服务器时启用的热重载功能有关。 您可以尝试将其设置为False ,但即使可行,我也强烈建议切换为使用 WSGI 服务器部署应用程序。 不需要那么多额外的努力。

Gunicorn将是最简单的。 查看概述如何使用 Gunicorn 提供 WSGI 应用程序的 GCP 文档

看起来它归结为将 Gunicorn 添加到您的requirements.txt并设置app.yamlentrypoint点参数。 Flask 实例(因此是您应用程序的 WSGI 入口)是app.server ,其中app是一个dash.Dash instance 我以前没有这样做过,但是查看 GCP 文档,我对您的entrypoint点行的猜测是:

entrypoint: gunicorn -b :$PORT app:server

然后可以删除使用if __name__ == '__main__'来运行开发服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM