Je parlais aujourd'hui à un de mes collègues des frameworks Web Python et de nos impressions à leur sujet. Je lui ai dit que je pense que Flask ayant une demande globale sent mauvais et est un anti-modèle.
Les documents disent à propos du contexte de la demande:
En revanche, pendant le traitement des demandes, deux autres règles existent:
- lorsqu'une requête est active, les objets locaux de contexte (flask.request et autres) pointent vers la requête en cours.
- n'importe quel code peut mettre la main sur ces objets à tout moment.
Je pense que je comprends l'idée derrière cette décision de conception - pour rendre l'application plus simple. C'est juste un compromis, comme dans le cas des sections locales de thread :
Oui, ce n'est généralement pas une bonne idée d'utiliser des sections locales de threads. Ils causent des problèmes aux serveurs qui ne sont pas basés sur le concept de threads et rendent les grandes applications plus difficiles à maintenir. Cependant, Flask n'est tout simplement pas conçu pour les grandes applications ou les serveurs asynchrones. Flask souhaite faciliter l'écriture rapide et facile d'une application Web traditionnelle.
L'application d'un correctif à un objet global avec les informations de demande en cours est-elle un anti-modèle?
Je crois que c'est le cas, car il est de l'avis de l'analyseur de code statique un état global, bien qu'il ne le soit pas. Et en tant que programmeur, je ne comprendrai pas comment cela fonctionne sans lire attentivement les documents . Et cela a des conséquences sur les tests .
N'est-ce pas une bonne pratique de passer la demande en argument aux vues? Je pense que c'est plus lisible, explicite et plus facile à déboguer. Et évite l'état global.