Closed jbdesbas closed 9 months ago
En effet, lors de l'intégration dans le profil de démo et de la présentation du plugin du CRAIG aux journées QGIS, j'ai pu me rendre compte que le chargement était fait au chargement de QGIS alors qu'il vaut mieux utiliser le signal de quand l'interface est chargée.
Exemple https://github.com/geotribu/qtribu/blob/main/qtribu/plugin_main.py#L157
Par ailleurs, plutôt que de coder vous-même le QgsThread et le téléchargement, il est de bon ton d'utiliser le processing de téléchargement de fichier déjà tout bien intégré : https://qgis.org/pyqgis/3.28/core/QgsFileDownloader.html
Exemple : https://github.com/geotribu/qtribu/blob/main/qtribu/toolbelt/network_manager.py#L163-L188
Super. Merci beaucoup pour ton aide sur ce sujet.
[Juste pour être sûr que tu regardes au bon endroit dans le code, le code actuel est en chantier en se rebasant sur ton template CookieCutter. C'est dans la branche dev
.]
[Juste pour être sûr que tu regardes au bon endroit dans le code, le code actuel est en chantier en se rebasant sur ton template CookieCutter. C'est dans la branche
dev
.]
Tu fais bien de me le dire !
Je passais juste faire coucou :)
Réaliser le téléchargement des fichiers distants après le chargement de l'interface QGIS devrait permettre de résoudre la lenteur (voir les crash) de QGIS au démarrage provoquée par le plugin
2023-07-26T08:18:27 INFO First Aid chargé (paquet firstaid)
2023-07-26T08:18:27 INFO QuickOSM chargé (paquet QuickOSM)
2023-07-26T08:18:34 INFO IDG chargé (paquet idg)
2023-07-26T08:18:34 INFO Copy_Coords chargé (paquet copy_coords)
2023-07-26T08:18:34 INFO Get WKT chargé (paquet QGIS3-getWKT)```
@Guts merci pour tes exemples sur qtribu, le plugin ne retarde plus le lancement de QGIS ou ne freeze plus l'interface. 😀️
Si les fichiers sont téléchargés avec QgsThread
(non bloquant), y a t'il encore un intérêt à différer le chargement du plugin après le chargement de l'interface QGIS ?
Le souci c'est que la fonction connectée au signal initializationCompleted
n'est pas exécutée si le plugin est activé après le lancement de l'interface QGIS (activation du plugin depuis le gestionnaire d'extension, rechargement du plugin via Plugin Reloader ou tout autre méthode).
Je n'observe pas de différence sur le temps de lancement en exécutant le téléchargement des fichiers au moment de l'initialisation du plugin ou après le chargement de l'interface QGIS.
@Guts merci pour tes exemples sur qtribu, le plugin ne retarde plus le lancement de QGIS ou ne freeze plus l'interface. grinning
Va falloir le mettre dans les crédits de votre plugin :laughing: !
Le souci c'est que la fonction connectée au signal initializationCompleted n'est pas exécutée si le plugin est activé après le lancement de l'interface QGIS (activation du plugin depuis le gestionnaire d'extension, rechargement du plugin via Plugin Reloader ou tout autre méthode).
En effet, il faut prévoir de connecter les fonctions d'initialisation du plugin (téléchargement, authentification, config...) sur le signal d'activation du plugin également et qu'elles soient idempotentes au max.
Je n'observe pas de différence sur le temps de lancement en exécutant le téléchargement des fichiers au moment de l'initialisation du plugin ou après le chargement de l'interface QGIS.
Je pense que c'est normal vu que le téléchargement est justement délégué à un ou plusieurs threads indépendants du thread principal, sur lequel sont faites les mesures.
Lors du téléchargement et du chargement des fichiers projets de config, le thread principal risque de bloquer plusieurs secondes (freeze de l'interface).
QgsTask
Exemple : https://docs.qgis.org/3.22/en/docs/pyqgis_developer_cookbook/tasks.html#examples