@@ -497,6 +497,9 @@ def __init__( # pylint: disable=too-many-statements
497
497
for plugin in plugins :
498
498
plugin .plug (self )
499
499
500
+ # tracks internally if a function already handled at least one request.
501
+ self ._got_first_request = {"pages" : False , "setup_server" : False }
502
+
500
503
if self .server is not None :
501
504
self .init_app ()
502
505
@@ -542,7 +545,7 @@ def _handle_error(_):
542
545
"""Handle a halted callback and return an empty 204 response."""
543
546
return "" , 204
544
547
545
- self .server .before_first_request (self ._setup_server )
548
+ self .server .before_request (self ._setup_server )
546
549
547
550
# add a handler for components suites errors to return 404
548
551
self .server .errorhandler (InvalidResourceError )(self ._invalid_resources_handler )
@@ -1269,6 +1272,10 @@ def dispatch(self):
1269
1272
return response
1270
1273
1271
1274
def _setup_server (self ):
1275
+ if self ._got_first_request ["setup_server" ]:
1276
+ return
1277
+ self ._got_first_request ["setup_server" ] = True
1278
+
1272
1279
# Apply _force_eager_loading overrides from modules
1273
1280
eager_loading = self .config .eager_loading
1274
1281
for module_name in ComponentRegistry .registry :
@@ -2022,8 +2029,12 @@ def enable_pages(self):
2022
2029
if self .pages_folder :
2023
2030
self ._import_layouts_from_pages ()
2024
2031
2025
- @self .server .before_first_request
2032
+ @self .server .before_request
2026
2033
def router ():
2034
+ if self ._got_first_request ["pages" ]:
2035
+ return
2036
+ self ._got_first_request ["pages" ] = True
2037
+
2027
2038
@self .callback (
2028
2039
Output (_ID_CONTENT , "children" ),
2029
2040
Output (_ID_STORE , "data" ),
0 commit comments