Giter Club home page Giter Club logo

Comments (3)

bouttier avatar bouttier commented on June 17, 2024 1

C’est assez habituel pour une application de ne pas démarrer lorsque son fichier de configuration n’est pas correcte. Et c’est assez inhabituel de redémarrer automatiquement une application à la modification de son fichier de configuration. Je mettrai un point de vigilance à ne pas rentrer dans des fonctionnements totalement inhabituels en raison du besoin BRGM où les utilisateurs n’ont pas la main sur le redémarrage de l’application. Notamment, pour les utilisateurs ayant accès au shell, il me semble vraiment inhabituel et piégeux que lorsque l’on lance geonature avec systemctl, celui-ci nous affiche que l’application s’est bien lancé, et qu’on se rende compte qu’il y a une erreur uniquement en se rendant sur l’interface web. De même lorsqu’on lance geonature en dev.
Ainsi, si une telle fonctionnalité venait à être implémenté, il me semble important que se comportement soit strictement optionnel (activé via une variable d’environnement par exemple).
Par ailleurs, j’ai du mal à évaluer les impacts de cette fonctionnalité dans la mesure où la configuration est chargé lors d’un import. Que se passera-t-il pour tous les fichiers qui importe la config mais où celle-ci est erronée ?

from geonature.

joelclems avatar joelclems commented on June 17, 2024

Effectivement cela pose la question d'une telle fonctionalité.

J'ai pas d'idée trop précise sur l'implémentation
cela pourrait être (en utilisant la variable d'environnement GEONATURE_SAFE_MODE_ON_CONFIG_FAILURE (qui dit mieux)

dans config.py de remplacer cette ligne par

raise ConfigError(CONFIG_FILE, e.messages)

    error_module=ConfigError(CONFIG_FILE, e.messages) 

au lieu de lever une erreur on la stoque dans une variable error_config

dans app.py on importe error_config en meme temps que config
et on pourrais ajouter ce test ici juste apres l'appel à Flask

def create_app(with_external_mods=True):
app = Flask(
__name__.split(".")[0],
root_path=config["ROOT_PATH"],
static_folder=config["STATIC_FOLDER"],
static_url_path=config["STATIC_URL"],
template_folder="geonature/templates",
)

    if error_config is not None:
        if os.environ["GEONATURE_SAFE_MODE_ON_CONFIG_FAILURE"]:
            print(config_error) # ou log de l'erreur)
            return
        else: 
            raise config_error

qui dans tout les cas va soit crasher l'appli, soit la lancer sans charger aucune route

Je me pose a question sur le comportement des commandes avec une config erronée idéalement il faudrait qu'elles crashent à cet endroit mais est ce qu'il est possible de savoir si on appelle create_app depuis une commande ?

from geonature.

camillemonchicourt avatar camillemonchicourt commented on June 17, 2024

Je ne pense pas non plus qu'il faille aller trop loin dans un fonctionnement atypique et "maison" et qui apporte des risques en plus, pour pouvoir redémarrer automatiquement l'application quand on modifie sa configuration.

from geonature.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.