web-dev-qa-db-fra.com

Inconvénients de l'utilisation d'ASGI au lieu de WSGI

Quels sont les inconvénients explicites et clairs de l'utilisation d'ASGI au lieu de WSGI pour gestion des requêtes HTTP in Django en général?

Je sais que ASGI est pour les tâches asynchrones , mais il peut également gérer les requêtes HTTP synchrones via http.* chaînes. Est-il plus lent que WSGI normal ou existe-t-il des fonctionnalités non prises en charge par rapport à WSGI?

Un de plus, pour fournir à la fois REST API et gestion du websocket dans le même projet, quelle voie préférez-vous et pourquoi?

  1. WSGI pour REST + ASGI pour websocket dans différentes instances de serveur
  2. WSGI pour REST + ASGI pour websocket sur la même machine
  3. ASGI pour les deux
15
Analysis

Je n'ai fait aucune analyse comparative, mais j'utilise à la fois WSGI et ASGI dans plusieurs projets et je n'ai pas vu de différences suffisantes entre leurs performances, donc si les performances WSGI Django WSGI sont acceptables pour vous, alors ASGI travailler aussi.

Pour l'API REST + websockets, j'ai utilisé ASGI pour les deux. Il n'y a aucune raison d'utiliser WSGI si vous avez activé ASGI dans votre projet (WSGI fonctionne sur ASGI).

2
stasdavydov

Je pense que le seul inconvénient majeur que vous constaterez est que les serveurs ASGI sont plus récents et donc moins testés, peuvent avoir moins de fonctionnalités, moins en nombre et ont probablement une plus petite communauté derrière eux. Cependant, j'utilise un serveur ASGI (Daphne) pour tout et je pense que les websockets offrent tellement en termes d'expérience utilisateur que tout finira par passer à ASGI.

Pouvoir utiliser asyncio dans votre code est un avantage majeur pour la programmation Web. Au lieu d'exécuter 10 requêtes l'une après l'autre et d'attendre que chacune revienne, vous pouvez exécuter 10 requêtes en même temps, tout en atteignant votre cache et en effectuant une demande HTTP simultanément sur un seul thread.

0
kagronick