Hmmmm, it doesn’t seem to work with pages, even with the changed imports.
As a minimal example, here’s what I have.
Structure:
app.py
pages/
└── page1.py
app.py
:
from dash_extensions.enrich import DashProxy, BlockingCallbackTransform, dcc, html, Input, Output, page_container
import time
app = DashProxy(__name__,
transforms=[BlockingCallbackTransform()],
use_pages=True
)
app.layout = html.Div([
html.Div(id="main-output"),
dcc.Interval(id="main-trigger"),
page_container
]) # default interval is 1s
@app.callback(
Output("main-output", "children"),
Input("main-trigger", "n_intervals"),
blocking=True)
def main_update(n_intervals):
time.sleep(5) # emulate slow database
return f"Hello! (n_intervals is {n_intervals})"
if __name__ == '__main__':
app.run_server(debug=True)
pages/page1.py
:
from dash_extensions.enrich import html, dcc, register_page, callback, Output, Input
import time
register_page(__name__, path="/page1")
layout = html.Div([
html.Div(id="page1-output"),
dcc.Interval(id="page1-trigger"),
]) # default interval is 1s
@callback(
Output("page1-output", "children"),
Input("page1-trigger", "n_intervals"),
blocking=True)
def page1_update(n_intervals):
time.sleep(5) # emulate slow database
return f"Hello! (n_intervals is {n_intervals})"
Running this app will yield a non-existent ID error:
A nonexistent object was used in an 'Input' of a Dash callback. The id of this object is 'page1-trigger' and the property is 'n_intervals'. The string ids in the current layout are: [main-output, main-trigger, _pages_location, _pages_content, _pages_store, _pages_dummy, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_start_client, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_end_server, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_end_client, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_start_blocked, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_start_client_ctx, 3288faf5-72b8-49c0-8ba9-2c0f2c437a6d_end_blocked, da5d9eaa-ce93-4870-a623-40a11ef09053_start_client, da5d9eaa-ce93-4870-a623-40a11ef09053_end_server, da5d9eaa-ce93-4870-a623-40a11ef09053_end_client, da5d9eaa-ce93-4870-a623-40a11ef09053_start_blocked, da5d9eaa-ce93-4870-a623-40a11ef09053_start_client_ctx, da5d9eaa-ce93-4870-a623-40a11ef09053_end_blocked]