为什么仪表板应用程序结构两次计算数据?

问题描述

我有一个连字符和以下4个模块。应用程序需要从dashboard.py和tab_OIA.py导入,因为这两个模块都可以与应用程序一起使用。这也是情节破折号网站推荐的方式:

  • app.py:

    import dash
    app = dash.Dash(__name__,suppress_callback_exceptions=True)
    
  • dashboard.py:

    from app import app 
    from tab_OIA import tab_OIA_layout
        .
        .
        .
    if __name__ == '__main__':
    app.run_server(debug=True,threaded=True)
    
  • tab_OIA.py:

    from app import app 
    import data
    
    tab_OIA_layout = html.Div(.....)
    
    @app.callback()
    def function():
       return ..
    
  • data.py:

    import pandas 
    *calculate stuff*
    print("Everything calculated")
    

当我在cmd中运行dashboard.py时,它会显示以下内容,并且“计算的所有内容”都会出现两次:

C:\Users\.spyder-py3>python dashboard.py
Everything calculated
Running on http://127.0.0.1:8050/
Debugger PIN: 111-463-400
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production Wsgi server instead.
 * Debug mode: on
Everything calculated
Running on http://127.0.0.1:8050/
Debugger PIN: 101-604-170

两次计算数据需要很多时间。为什么会这样呢?有办法避免这种情况吗?

解决方法

您两次导入app.py。要解决此问题,请尝试从from app import app中删除dashboard.py

#from app import app 
from tab_OIA import *
    .
    .
    .
if __name__ == '__main__':
app.run_server(debug=True,threaded=True)