✊🏿 Black Lives Matter. Please consider donating to Black Girls Code today.
⚡️ Concerned about the grid? Kyle Baranko teaches how to predicting peak loads using XGBoost. Register for the August webinar!

Thread executor not executing task when debug is set to False

UPDATE_INTERVAL = 60 * 5

df = pd.read_csv('data.csv')

def fetch_data():
    global df
    df = pd.read_csv('data.csv')
    print(df['Value'])


def refresh_data(period=UPDATE_INTERVAL):
    """Update the data every 'period' seconds"""
    while True:
        print('Refreshing the data from server')
        fetch_data()
        time.sleep(period)


# Run the function in another thread
def initialize_executor():
    executor = ThreadPoolExecutor(max_workers=1)
    executor.submit(refresh_data)


app = dash.Dash(
    __name__,
    meta_tags=[{"name": "viewport", "content": "width=device-width, initial-scale=1"}],
)
app.config['suppress_callback_exceptions'] = True


def serve_layout():
    return html.Div(
        children=df['Name']
    )


app.layout = serve_layout

if __name__ == '__main__':
    initialize_executor()
    app.run_server(debug=False, host='127.0.0.1', port=8052)

I am trying to schedule data loading (from MySQL) with thread executor as shown in code above. However, the task is not executed when debug is set to false.

What am I doing wrong over here?