[Indicação] Do WSGI ao ASGI no Python Django
Olá turma, bão demais aí?! Atualmente estou estudando como criar sites e aplicativos web no backend e após ler o Tutorial de Django - Introdução do @jackson541 fiquei curioso para saber mais sobre o que é WSGI e ASGI num belo framework: O Python Django! 🚀
Mas o mais impressionante é que encontrei um artigo - muito bem escrito por sinal - escrito por Klaus Peter Laube, que é dono deste site e autor deste baita artigo! Obs.: Todos os créditos do artigo Do WSGI ao ASGI - Parte 1 são de Klaus Peter Laube.
O detalhe é que além de ter a resposta que eu precisava, também recebi uma chuva de conhecimentos valiosos explicados de maneira simples e direta ao ponto que tenho certeza que vai te supreender. É mais um artigo, mas com todo o embasamento necessário para entender o que de fato é WSGI e ASGI!!!
Dito isso, resolvi compartilhar aqui os principais tópicos que pode acabar te interessando e te fazer sentir a vontade de ler este baita artigo, mesmo se seu foco não é saber nada sobre Django, WSGI ou ASGI, vale muuuuuuuito a pena lê-lo 😉
Observações
- É necessário ter um conhecimento mediano de python, compreendendo todos recursos básicos como variáveis, loops, condicionais, etc.
- Também é necessário ter um certo conhecimento de computação, mas se você é iniciante e quiser se aventurar para aprender os conceitos ali ministrados, é um prato cheio!
Tópicos Abordados
-
CPU, Cores, Processos e Threads
-
Concorrência e Paralelismo
Créditos da imagem para Klaslaube
-
Exemplo do Almoço
-
O Famigerado GIL (Global Interpreter Lock)
-
Multithreading e Multiprocessing
-
I/O-bound e CPU-bound
Créditos da imagem para Klasulaube
-
Threads e I/O
-
Asynchronous e asyncio
-
Event Loop
-
asyncio x multithreading
-
Síncrono x Assíncrono
-
Exemplo da Enxadrista
-
async/await
De Volta ao Objetivo
Maaas voltando ao objetivo principal que era entender sobre WSGI e ASGI, vou deixar uma breve explicação sobre o que é cada um.
WSGI
- Web Server Gateway Interface.
- wsgi.py: É o arquivo para as configurações síncronas do projeto.
- É mais tradicional (mais tempo) no Django.
- Com WSGI, cada workerthread é bloqueada enquanto espera por chamadas de banco de dados ou chamadas de API que ela faz, mas as outras workerthreads não são afetadas.
ASGI
- Asynchronous Server Gateway Interface.
- asgi.py: É o arquivo para as configurações assíncronas do projeto.
- É mais moderno (relativamente novo) no Django.
- Com o ASGI, cada workerthread individual pode executar várias tarefas muito melhor e pode começar a lidar com outra solicitação enquanto aguarda uma chamada lenta para o banco de dados ou uma API.
- Portanto, mudar para ASGI pode aumentar um pouco a taxa de transferência máxima no servidor, mas não a velocidade de cada solicitação individual.
Chamada para Ação
Compartilhe você também os artigos que você acharam mais interessantes, que nem eu percebi que este artigo que li é também de utilidade pública não só para django, mas para conceitos que vão além da linguagem em si! E também deixe seus comentáriosss 😄