Sur le web, j'ai découvert que WSGI est un CGI pour les frameworks/frameworks web python. FCGI semble être une passerelle plus généralisée pour une variété de langues. Ne pas connaître la différence de performance entre les deux en référence aux langages python et C/++.Y a-t-il une différence de vitesse entre WSGI et FCGI?
Répondre
Correct, WSGI est une définition d'API programmatique Python et FASTCGI est une définition de protocole de prise de connexion agnostique de langue. Effectivement, ils sont à différentes couches avec WSGI étant une couche supérieure. En d'autres termes, on peut implémenter WSGI en plus de quelque chose qui est arrivé à utiliser FASTCGI pour communiquer avec un serveur web, mais pas l'inverse.
En général, FASTCGI étant un protocole de connexion par socket, vous avez toujours besoin d'un type d'interface de programmation pour l'utiliser. Pour Python, une telle option est WSGI. Comme FASTCGI n'est qu'un moyen pour atteindre une fin, on ne peut pas vraiment comparer ses performances à WSGI dans ce cas car WSGI n'est pas un protocole de prise de fils comparable, mais un utilisateur de FASTCGI lui-même. On pourrait essayer de comparer les performances des différentes interfaces de langage au-dessus de FASTCGI, mais en général c'est tout à fait dénué de sens car la couche réseau inférieure et la gestion des requêtes serveur ne sont pas le goulot d'étranglement. Au lieu de cela, votre code d'application et votre base de données seront.
Ce sont deux choses différentes. WSGI est une interface spécifique à Python pour l'écriture d'applications Web. Il existe des wrappers pour tout protocole de serveur Web pour fournir l'interface WSGI. FastGCI (FCGI) est l'un de ces protocoles de serveur Web. Donc, WSGI est une couche d'abstraction, tandis que CGI/FastCGI/mod_python sont la façon dont les serveurs web réels parlent à l'application. Du code doit traduire l'interface native en WSGI (il y a un module CGI en wsgiref
, il y a flup
pour FastCGI, etc.). Il y a aussi mod_wsgi pour Apache, qui fait la traduction directement dans un module Apache, donc vous n'avez besoin d'aucun wrapper Python.
Je pense qu'il est utile de demander quelle est la différence de temps entre une application fcgi répondant à une demande et une application wsgi répondant à une requête. Comme fcgi et wsgi sont deux manières différentes d'interfacer un langage de programmation à une requête web, ils font des choses très similaires. – Ninjaxor