Comment fonctionne la pile Python Web Application

J'ai lu frénétiquement les services Python et REST car je veux commencer à apprendre et à créer un service. Les termes m'ont beaucoup confondu: mon expérience de l'application Web antérieure est une expérience limitée d'Apache + PHP. À partir de ce contexte, j'ai eu un moment de ha-ha au cours des deux derniers jours et ce diagramme est ce que je suis venu essayer de trier pour moi-même.

Entrez la description de l'image ici

Je suis tenté de modifier le diagramme car il semble que certains frameworks Web soient entièrement implémentés comme modules, tandis que d'autres travaillent en faisant en sorte que le serveur WSGI démarre un composant de structure qui, à son tour, appelle votre application, qui utiliserait généralement les modules fournis par le framework Pour certaines fonctionnalités. Est-ce exact?

Des questions:

  1. Qu'est-ce que j'ai laissé de côté ou j'ai compris mal?
  2. Il semble que le serveur Web soit facultatif, au moins certains serveurs WSGI peuvent s'exécuter en «autonome», mais souvent, cela n'est recommandé que pour le développement / test?
  3. Existe-t-il un serveur WSGI autonome de qualité de production?
  4. Qu'en est-il de quand ne pas utiliser WSGI. Les gens recommandent souvent WSGI, mais si je le lis bien, c'est pour la portabilité. Je ne m'intéresse vraiment pas au portage entre les serveurs Web / piles / frameworks. L'élimination des couches a sa propre attraction. Lorsque vous n'utilisez pas WSGI, comment l'image change-t-elle?
  5. Où les réécritures d'URL ont-elles lieu? D'après ce que j'ai lu, il semble s'agir d'une combinaison de deux endroits: le serveur Web et / ou l'application. Si le serveur Web est le meilleur endroit pour le faire, cela pourrait créer une dépendance importante pour avoir un serveur Web flexible et efficace dans la pile.
  6. Comment puis-je limiter la réécriture d'URL? Puis-je éviter la nécessité d'utiliser les réécritures d'URL, par exemple en concevant l'application correctement? En fait, si je choisissais Apache en tant que serveur web, il semblerait, d'après ma compréhension limitée, que le chemin à parcourir serait d'essayer d'éliminer l'utilisation de .htaccess – j'imagine qu'avec un but spécial, le serveur Apache pourrait être désactivé. Htaccess et mettre les règles dans le fichier de configuration principal, ou peut-être optimiser l'utilisation .htaccess en ayant une structure de répertoire peu profonde et simplifiée. Cela, combiné à la désactivation de tous les modules d'apache essentiels, sauf les simples, semble être une solution soignée.
  7. Actuellement, je me prépare à utiliser web.py comme cadre, et leur page d'installation semble favoriser lighttpd, dont je n'ai aucune expérience, mais semble être assez facile à maîtriser. Comment lighttpd + web.py altère-t-il l'image?

Et la question la plus importante de tous: Qu'en est-il du moment où l'application est une API RESTful? Les réponses aux questions ci-dessus sont-elles différentes d'un service API REST?