Python Plotly Dash应用程序在本地工作,但在Heroku上,它在回调中以2个版本的应用程序对象结束

2024-05-23 16:58:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python plotly dash应用程序,它是这样组织的:

class MyApp:
    def __init__(self):
        self.app = dash.Dash(__name__)
        self.app.layout = ...
        ...
    def methods(self):
        """My methods for doing stuff in the app."""
        ...

此外,我还有一个脚本,在其中实例化MyApp并编写回调:

my_app = MyApp()
server = my_app.app.server

# my callbacks go here

if __name__ == '__main__':
    my_app.app.run_server()

这种方法在localhost以及我尝试过的几个托管平台(包括GCP)上运行得非常好。但它在赫罗库身上表现出非常奇怪的行为

通过在回调中打印id(my_app),我观察到Heroku以某种方式以2个唯一的my_app对象结束,并且回调的每个调用似乎都以其中一个随机结束。因此,回调返回的输出完全过时,与预期行为不同步

它从不引发错误,而是在用户输入时在两个不同版本的图形等之间随机切换

知道为什么会这样吗?为什么它只发生在Heroku上,而我没有测试过其他地方

谢谢你的建议


Tags: nameselfapp应用程序herokuserverinitmy