Lazy-load non-essential blueprints to improve desktop startup
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 38/100
- Tipo di issue
- Refactoring
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Stack tecnologico
- electron, python
- Ambito
- backend, desktop-dev, performance
Direzione di ricerca
Start by tracing create_app() and running the three python -X importtime commands listed in the issue, then compare those results with overall startup time. Review authenticate/registry.py and the blueprint loading paths for tools, llm, and dashboard. Done means a measured, agreed scope for lazy loading that preserves the essential desktop startup flow.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
Some blueprints are imported during create_app() even though they are not required for desktop startup (SERVER_MODE=False). If we only import essential blueprints on startup and lazy load the other this would definetly result in faster load times.
After tracing the startup flow here is a breakdown of the blureprints and how we should ideally load them:
Modules that should remain eagerly loaded
| Module | Reason |
|---|---|
misc |
Provides the /misc/ping endpoint that Electron polls while waiting for the backend to start. Without it, the application never gets past the splash screen. |
browser |
Hasindex(), the first page Electron loads after startup. Deferring it only shifts the wait from the splash screen to a blank window. preferences also depends on it. |
Core authenticate |
Required for session and login handling, even in desktop mode. |
Good lazy-loading candidates
| Module | Load when | Reason | Approx. size |
|---|---|---|---|
authenticate (kerberos, ldap, mfa, oauth2, webserver) |
Never in desktop mode | Gate imports in authenticate/registry.py behind config.SERVER_MODE. Desktop runs with SERVER_MODE=False and doesn't use these providers. |
~14 files |
tools |
First tool opens | Query Tool, Debugger, Backup/Restore, ERD, Import/Export, etc. aren't needed during startup. | ~155 files |
llm |
AI assistant opened | Depends on pgadmin.tools.user_management, so it would likely move together with tools. |
~32 files |
dashboard |
First server/database opened | The dashboard isn't shown until after a connection is opened. | ~7 files |
Note: Considering how often tools are used, we can keep the tools blueprint in the early-loading category for a few select tools.
Not worth lazy-loading
These modules are tiny (1–4 files each):
preferencessettingsabouthelpredirects
Estimated impact
Potentially removes eager imports for roughly:
toolsllm- External authentication backends
≈ 190 of ~915 Python files
File count is only a rough proxy and not an estimate of startup improvement.
Validation
Profile import costs:
python -X importtime -c "from pgadmin.tools import blueprint"
python -X importtime -c "from pgadmin.llm import blueprint"
python -X importtime -c "from pgadmin.authenticate.registry import AuthSourceRegistry"
Then compare against overall create_app() startup time.
Proposal
- Gate external auth provider imports behind
config.SERVER_MODE. - Lazy-load
toolson first use. - Lazy-load
llmtogether withtools. - Optionally lazy-load
dashboardif it can be done cleanly.
I would be happy to start from the authenticate change since it's small and self-contained.
This is not a concrete implementation proposal, but rather a summary of observations from tracing the desktop startup flow and a few areas that might be worth exploring. I have not profiled import times yet but plan to do so shortly, so these suggestions are based on the current startup path and module dependencies rather than measured performance. However, I will shortly run the performance tests and provide details as a follow-up to this issue.
I would also appreciate some guidance on whether these are the right areas to target, or if there is a better approach I'm overlooking.
Thanks
- Lingua principale
- Python
- Stelle
- 3.9k
- Fork
- 918
- Merge medio
- 2g 12h
- PR unite (30g)
- 35
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pgadmin-org/pgadmin4
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
pgadmin-org/pgadmin4#10673 ·
I maintainer di solito rispondono entro 2 giorni
-
Import/Export Data fails for a file name containing a backslash, and creates a stray file named EApertaBug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
pgadmin-org/pgadmin4#10672 ·
I maintainer di solito rispondono entro 2 giorni
-
Feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
pgadmin-org/pgadmin4#10426 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
Drag-n-drop file to sql editor tool don't clear previous content before adding the new content in windowsForse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaFeature
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
pgadmin-org/pgadmin4#10272 · 5 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Housekeeping
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
pgadmin-org/pgadmin4#10157 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di pgadmin-org/pgadmin4
Issue simili
-
Edit: TVS Encarnacion [PY]Apertachannels:edit check:passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The blue-green mitigation strategy lists catalog names and views before the source tablesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
aws-samples/sample-aws-genai-db-modernizer#2097 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
ietf-tools/datatracker#12027 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Python SDK overwrites OVPack backups with HTTP 200 JSON errorsForse già presa @stefanielizeth73-art l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
volcengine/OpenViking#7347 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
deepset-ai/haystack-core-integrations#4228 ·
I maintainer di solito rispondono entro 1 giorno