SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Globalcode – Open4education
Criando uma Aplicação CLI com
AsyncIO
Élysson Mendes Rezende
Desenvolvedor/Arquiteto de Software
Globalcode – Open4education
Agenda
➢ Arquitetura Sincrona X AsyncIO
➢ Como fazer um CLI utilizando AsyncIO
➢ Upload de imagens para o Google Photos
➢ Conclusão
Globalcode – Open4education
Hello World
Élysson MR
Desenvolvedor Python/NodeJS/GO atuando
com micro serviços na LuizaLabs, curioso por
natureza e padawan em Arquitetura de
Software.
github.com/elyssonmr
linkedin.com/in/elyssonmr
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
Tradicional
➢ O IO é bloqueante;
➢ Necessário muitos
recursos para escalar;
➢ Simples de codificar;
➢ Fácil de encontrar
bibliotecas;
AsyncIO
➢ O IO não é bloqueante;
➢ Não é necessário muitos
recursos para escalar;
➢ Complicado de codificar;
➢ Não existem muitas
bibliotecas Async (por
enquanto);
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
Fonte: https://realpython.com/python-concurrency/
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
Fonte: https://realpython.com/python-concurrency/
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Keyword async e await;
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Quando o Python inicializar o loop, ele vai adicionar
a primeira task da queue (T1) na Call Stack para
executar;
Adaptado de:
https://www.youtube.com/watch?v=8aGhZQkoFbQ
T1 T2
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Quando o Python inicializar o loop, ele vai adicionar
a primeira task da queue (T1) na Call Stack para
executar;
➢ Então o loop vai task T1 até encontrar um IO (ou
awaitable);
Adaptado de:
https://www.youtube.com/watch?v=8aGhZQkoFbQ
T1
T2
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Quando o Python inicializar o loop, ele vai adicionar
a primeira task da queue (T1) na Call Stack para
executar;
➢ Então o loop vai task T1 até encontrar um IO (ou
awaitable);
➢ Enquanto a T1 estiver aguardando o IO, o loop vai
pegar a próxima Task (T2) para adicioná-la na Call
Stack;
Adaptado de:
https://www.youtube.com/watch?v=8aGhZQkoFbQ
T1
T2
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Quando o Python inicializar o loop, ele vai adicionar
a primeira task da queue (T1) na Call Stack para
executar;
➢ Então o loop vai task T1 até encontrar um IO (ou
awaitable);
➢ Enquanto a T1 estiver aguardando o IO, o loop vai
pegar a próxima Task (T2) para adicioná-la na Call
Stack;
➢ Durante a execução do T2 pelo loop, a T1 finalizou o
IO dela retornando para a queue;
Adaptado de:
https://www.youtube.com/watch?v=8aGhZQkoFbQ
T1
T2
Globalcode – Open4education
Arquitetura Sincrona x AsyncIO
➢ Quando o Python inicializar o loop, ele vai adicionar
a primeira task da queue (T1) na Call Stack para
executar;
➢ Então o loop vai task T1 até encontrar um IO (ou
awaitable);
➢ Enquanto a T1 estiver aguardando o IO, o loop vai
pegar a próxima Task (T2) para adicioná-la na Call
Stack;
➢ Durante a execução do T2 pelo loop, a T1 finalizou o
IO dela retornando para a queue;
➢ Quando a T2 finalizar, a T1 irá voltar para o Call
Stack inicializando novamente o processo do loop;
Adaptado de:
https://www.youtube.com/watch?v=8aGhZQkoFbQ
T1
Globalcode – Open4education
Como fazer um CLI utilizando
AsyncIO
Globalcode – Open4education
Upload de images para o Google
Photos
Globalcode – Open4education
Conclusão
➢ Com o AsyncIO conseguimos escalar melhor a
nossa aplicação, fazendo IO em “paralelo”;
➢ É muito importante saber utilizar o loop para que
possamos pegar o máximo valor dele;
➢ Sempre devemos projetar o sistema para não
travar o loop;
➢ AsyncIO não é bala de prata;
Globalcode – Open4education
Referência
➢ https://realpython.com/async-io-python/
➢ https://realpython.com/python-concurrency/
➢ https://docs.python.org/3/library/asyncio.htm
l
➢ https://www.youtube.com/watch?v=8aGhZQ
koFbQ
Globalcode – Open4education
Obrigado
Github
LinkedIn
Criando uma Aplicação CLI com AsyncIO

Mais conteúdo relacionado

Semelhante a Criando uma Aplicação CLI com AsyncIO

Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++Uilian Ries
 
O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)Wellington Silva
 
Tekton: Pipelines para o Mundo Moderno
Tekton: Pipelines para o Mundo ModernoTekton: Pipelines para o Mundo Moderno
Tekton: Pipelines para o Mundo ModernoMauricio Magnani Jr
 
Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)Portabilis
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoratdc-globalcode
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaGPrimola
 

Semelhante a Criando uma Aplicação CLI com AsyncIO (20)

Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Async/await under the hood
Async/await under the hoodAsync/await under the hood
Async/await under the hood
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Poco Bibliotecas C++
Poco Bibliotecas C++Poco Bibliotecas C++
Poco Bibliotecas C++
 
O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)
 
Tekton: Pipelines para o Mundo Moderno
Tekton: Pipelines para o Mundo ModernoTekton: Pipelines para o Mundo Moderno
Tekton: Pipelines para o Mundo Moderno
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
Python Zope Plone - Fiocruz
Python Zope Plone - FiocruzPython Zope Plone - Fiocruz
Python Zope Plone - Fiocruz
 
Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)
 
Remobile
RemobileRemobile
Remobile
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 

Criando uma Aplicação CLI com AsyncIO

  • 1. Globalcode – Open4education Criando uma Aplicação CLI com AsyncIO Élysson Mendes Rezende Desenvolvedor/Arquiteto de Software
  • 2. Globalcode – Open4education Agenda ➢ Arquitetura Sincrona X AsyncIO ➢ Como fazer um CLI utilizando AsyncIO ➢ Upload de imagens para o Google Photos ➢ Conclusão
  • 3. Globalcode – Open4education Hello World Élysson MR Desenvolvedor Python/NodeJS/GO atuando com micro serviços na LuizaLabs, curioso por natureza e padawan em Arquitetura de Software. github.com/elyssonmr linkedin.com/in/elyssonmr
  • 4. Globalcode – Open4education Arquitetura Sincrona x AsyncIO Tradicional ➢ O IO é bloqueante; ➢ Necessário muitos recursos para escalar; ➢ Simples de codificar; ➢ Fácil de encontrar bibliotecas; AsyncIO ➢ O IO não é bloqueante; ➢ Não é necessário muitos recursos para escalar; ➢ Complicado de codificar; ➢ Não existem muitas bibliotecas Async (por enquanto);
  • 6. Globalcode – Open4education Arquitetura Sincrona x AsyncIO Fonte: https://realpython.com/python-concurrency/
  • 8. Globalcode – Open4education Arquitetura Sincrona x AsyncIO Fonte: https://realpython.com/python-concurrency/
  • 9. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Keyword async e await;
  • 10. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Quando o Python inicializar o loop, ele vai adicionar a primeira task da queue (T1) na Call Stack para executar; Adaptado de: https://www.youtube.com/watch?v=8aGhZQkoFbQ T1 T2
  • 11. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Quando o Python inicializar o loop, ele vai adicionar a primeira task da queue (T1) na Call Stack para executar; ➢ Então o loop vai task T1 até encontrar um IO (ou awaitable); Adaptado de: https://www.youtube.com/watch?v=8aGhZQkoFbQ T1 T2
  • 12. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Quando o Python inicializar o loop, ele vai adicionar a primeira task da queue (T1) na Call Stack para executar; ➢ Então o loop vai task T1 até encontrar um IO (ou awaitable); ➢ Enquanto a T1 estiver aguardando o IO, o loop vai pegar a próxima Task (T2) para adicioná-la na Call Stack; Adaptado de: https://www.youtube.com/watch?v=8aGhZQkoFbQ T1 T2
  • 13. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Quando o Python inicializar o loop, ele vai adicionar a primeira task da queue (T1) na Call Stack para executar; ➢ Então o loop vai task T1 até encontrar um IO (ou awaitable); ➢ Enquanto a T1 estiver aguardando o IO, o loop vai pegar a próxima Task (T2) para adicioná-la na Call Stack; ➢ Durante a execução do T2 pelo loop, a T1 finalizou o IO dela retornando para a queue; Adaptado de: https://www.youtube.com/watch?v=8aGhZQkoFbQ T1 T2
  • 14. Globalcode – Open4education Arquitetura Sincrona x AsyncIO ➢ Quando o Python inicializar o loop, ele vai adicionar a primeira task da queue (T1) na Call Stack para executar; ➢ Então o loop vai task T1 até encontrar um IO (ou awaitable); ➢ Enquanto a T1 estiver aguardando o IO, o loop vai pegar a próxima Task (T2) para adicioná-la na Call Stack; ➢ Durante a execução do T2 pelo loop, a T1 finalizou o IO dela retornando para a queue; ➢ Quando a T2 finalizar, a T1 irá voltar para o Call Stack inicializando novamente o processo do loop; Adaptado de: https://www.youtube.com/watch?v=8aGhZQkoFbQ T1
  • 15. Globalcode – Open4education Como fazer um CLI utilizando AsyncIO
  • 16. Globalcode – Open4education Upload de images para o Google Photos
  • 17. Globalcode – Open4education Conclusão ➢ Com o AsyncIO conseguimos escalar melhor a nossa aplicação, fazendo IO em “paralelo”; ➢ É muito importante saber utilizar o loop para que possamos pegar o máximo valor dele; ➢ Sempre devemos projetar o sistema para não travar o loop; ➢ AsyncIO não é bala de prata;
  • 18. Globalcode – Open4education Referência ➢ https://realpython.com/async-io-python/ ➢ https://realpython.com/python-concurrency/ ➢ https://docs.python.org/3/library/asyncio.htm l ➢ https://www.youtube.com/watch?v=8aGhZQ koFbQ