Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance - création d'un export #129

Closed
andriacap opened this issue Apr 25, 2023 · 1 comment
Closed

Performance - création d'un export #129

andriacap opened this issue Apr 25, 2023 · 1 comment
Assignees

Comments

@andriacap
Copy link
Contributor

Version
Version de GeoNature testé 2.11.2 (mais aussi le code est le même en version > 2.11.2)

Description de l'issue
Dans le cadre d'une prestation pour l'Agence Régionale de la Biodiversité en île de France des erreurs dûes à des requêtes trop longues renvoie des erreurs 502 lors de la création d'export.
En effet, selon la complexité de la vue et la quantité de données présentes dans la bdd la création peut prendre plusieurs secondes (par exemple 10 secondes pour la création de l'export basé sur gn_exports.v_synthese_sinp ) .
La question que je me pose est la suivante est il nécessaire de "query" la vue (qui est à l'origine du temps de la requête)
Voir la partie du code suivante :

query = GenericQueryGeo(
DB,
view_name.data,
schema_name.data,
geometry_field=geometry_field.data,
filters=[],
)
query.return_query()

En supposant que l'auteur de la vue à vérifié que la vue renvoyait bien ce qu'il souhaite, est ce que lors de la création de l'export il suffit pas juste de checker si le schema et la vue renseigné dans flask admin existe bien ?
Du coup en remplaçant le code ci-dessus par le code ci-dessous on s'assure bien que le schema et la vue existe et en terme de performance on passe à 0.008 sec :

with DB.engine.connect() as conn:
   is_schema_exist = DB.engine.dialect.has_schema(conn,schema_name.data)
   is_view_exist = DB.engine.dialect.has_table(conn, view_name.data,schema=schema_name.data)
 if not is_schema_exist:
        flash(f"The schema: '{schema_name.data}' doesn't exist",category="error")
         return False
 if not is_view_exist:
          flash(f"The view: '{ view_name.data}' doesn't exist",category="error")
          return False

Merci pour vos retours

@camillemonchicourt
Copy link
Member

Duplicate #104

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

No branches or pull requests

3 participants