SlideShare uma empresa Scribd logo
1 de 5
A terra prometida da assíncronicidade e da
concorrência:
Python e Golang - Parte 2
Índice:
1. Concorrência
2. Síncrono versus Assíncrono
3. Exemplos de tecnologias Síncrona e Assíncrona
4. A terra prometida da assíncronicidade e da concorrência
5. Conclusão da parte 2
1. Concorrência
“Concorrência é uma área desafiadora de desenvolvimento de software.
Décadas de pesquisa e prática levaram a uma ampla variedade de modelos
de concorrência, cada um com objetivos diferentes. A maioria centra-se em
exatidão, facilidade de uso, ou mesmo, simplicidade. Um exemplo notável
é a CSP (Comunicação de Processos Sequenciais, em que a abordagem de
concorrência de GO é aproximadamente baseada)”.
Fonte: www.python.org/dev/peps/pep-0554/
“A programação concorrente nunca foi tão importante quanto
atualmente. ...explorar os muitos processadores de um computador
moderno, que todo ano crescem em número, mas não em velocidade”.
Fonte: Donovan, pag. 291, 2017
“O asyncio é uma biblioteca do Python para escrever código concorrente
usando a sintaxe async/await. O asyncio é usado como uma base para
várias estruturas assíncronas do Python que fornecem servidores de rede e
Web de alto desempenho, bibliotecas de conexão de banco de dados, filas
de tarefas distribuídas etc. O asyncio é muitas vezes um ajuste perfeito
para código de rede estruturado de alto nível e vinculado a IO (Entrada e
Saída)”.
Fontes: https://docs.python.org/3/library/asyncio.html
https://docs.python.org/3/library/asyncio-dev.html
2. Síncrono versus Assíncrono
Síncrono:
Você está em uma fila para conseguir um ingresso de cinema. Você não
pode conseguir um ingresso até que todos na frente de você recebam um, e
o mesmo se aplica às pessoas na fila atrás de você.
Assíncrono:
Você está em um restaurante “à la carte” com muitas outras pessoas. Você
pede a sua refeição. Outras pessoas também podem pedir a refeição delas,
elas não precisam esperar que a sua refeição seja preparada e servida antes
que elas possam pedir a delas. Na cozinha, os trabalhadores do restaurante
estão continuamente cozinhando, servindo e recebendo pedidos. As
pessoas receberão a refeição delas assim que a comida estiver devidamente
cozida e pronta.
Fonte: https://stackoverflow.com/questions/748175/asynchronous-vs-
synchronous-execution-what-does-it-really-mean
3. Exemplo de tecnologias Síncrona e Assíncrona
Síncrona:
Sistemas informacionais orientados a eventos do usuário que executam
uma tarefa e aguardam o retorno do resultado, bloqueando qualquer outro
evento até que a tarefa seja concluída.
Assíncrona no front-end:
Na barra de pesquisas do Google, enquanto você digita os termos, várias
sugestões de pesquisa são exibidas, esse processo é feito com programação
assíncrona (AJAX - Asynchronous Javascript and XML).
Assíncrona no back-end:
a) Filas de tarefas assíncronas com sistemas Brokers, b) Frameworks
nativamente assíncronos (tornado, aiohttp, NodeJS), bibliotecas
assíncronas (asyncio)
4. A terra prometida da assíncronicidade e da concorrência
Por que a assíncronicidade é importante? Porque um processo assíncrono
não é blocante como ocorre no processo síncrono, ou seja, enquanto a
tarefa não terminar o processo síncrono não pode passar para a tarefa
seguinte. Porém, o processo síncrono é a opção correta quando a
sincronicidade dos dados é uma questão fundamental.
Quais são as tarefas que executadas de forma assíncrona oferecem um
melhor desempenho computacional no ambiente da tecnologia da
informação? a) Envio de e-mails, b) geração de relatórios complexos, c)
processamento de vídeo e imagem, d) comunicação com APIs de terceiros
(Spotify, Linkedin, Twitter, Instagram), gravação de blocos de dados em
disco/ssd com checagem de sucesso assíncrona(tabela abaixo),
Bloco de DB gravado síncrono Bloco de DB gravado assíncrono
for i in 1 .. 100
loop
write block X to disk and wait for the OS to tell
us the operation is totally complete (the block is
not buffered by the OS or anything, it is on disk)
end loop
for i in 1 .. 100
loop
write block X and return immediately, don't wait
end loop
now wait for the 100 blocks to "call back" to us, let
the OS do its work and wait.
Fonte: https://asktom.oracle.com/pls/asktom/f?
p=100:11:::::P11_QUESTION_ID:1257800375707
“O Python não era assíncrono nas primeiras versões. Na versão 3.5, o
recurso assíncrono do Python se tornou estável com a biblioteca nativa
asyncio. Na versão 3.7, essa biblioteca recebeu um grande conjunto de
melhorias e se tornou muito simples no trato para com o desenvolvimento.
Atualmente o Python está na versão 3.8
Nós temos o Django (Framework Web FullStack) e o Flask
(Microframework Web), mas eles não suportam o paradigma assíncrono
nativamente e para isso contam com o framework Celery (Fila de tarefas
assíncronas) e Flower (Monitor em tempo real e Web Admin para Celery).
O framework aiohttp é construído sobre a biblioteca nativa asyncio do
Python e os programadores de Python não precisam mais se arrepender de
não termos nenhum recurso como o NodeJS. Agora temos isso e tem
melhor desempenho que o NodeJS. O NodeJS é uma ótima plataforma,
mas se você for programador Python e não quiser mudar de Python para
JavaScript/NodeJS, então o framework aiohttp é a resposta correta para
você.”
Fonte: http://www.discoversdk.com/blog/asynchronous-python-web-
applications-with-aiohttp
Importante destacar, em inglês, os seguintes parágrafos:
“NodeJS is suitable only for async non blocking interaction e.g. with
MongoDb. Don't use it with RDBMS”
Fonte: https://stackoverflow.com/questions/18376042/are-relational-
databases-a-poor-fit-for-node-js/39323415#39323415
aiopg is a library for accessing a PostgreSQL database from the asyncio
(PEP-3156/tulip) framework. It wraps asynchronous features of the
Psycopg database driver.
Fonte: https://aiopg.readthedocs.io/en/stable/
5. Conclusão da parte 2
Algumas tecnologias estão mais alinhadas com os seus respectivos
“matchs” tecnológicos (Nginx/uWSGI/Django com PostgreSQL,
Nginx/NodeJS com MongoDB (NoSQL DB), Nginx/asyncio com
PostgreSQL/aiopg, Nginx/aiohttp com PostgreSQL/aiopg, Tornado com
Websockets e NoSQL DBs). Cada produto open-source, citado aqui, está
evoluindo fortemente pelo esforço dos membros das suas respectivas
comunidades, gerando, inclusive, novos produtos por meio dos forks. Os
“matchs” citados são usos comuns, não é uma regra, e podem variar,
principalmente com a maturidade dos produtos. Criatividade e inovação
em software e processos.
Bibliografia:
Donovan, Alan A. A.; Kernighan, Brian W.; Tradução: Lúcia A. Kinoshita,
A Linguagem de Programação Go, Editora Novatec, 2017
Gostou? Dê um like! Fique a vontade em compartilhar e usar no seu estudo de
caso. Apenas informe a fonte. Obrigado e sucesso!
Ahhh eu tenho uma lista de desejo na Amazon:
I have a wishlist at Amazon
https://www.amazon.com.br/hz/wishlist/ls/2Y2J3ADYO50TH
Could you do me a kindness? :-)
Marcos Aurelio Barranco
SP/SP
12/Agosto/2019
Atualizado em: 31/Agosto/2019

Mais conteúdo relacionado

Mais procurados

Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
Diego Santos
 

Mais procurados (20)

Flutter
FlutterFlutter
Flutter
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Princípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémPrincípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e Além
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
FISL16 :: Escalabilidade - de uma máquina para múltiplos data centers
FISL16 ::  Escalabilidade - de uma máquina para múltiplos data centersFISL16 ::  Escalabilidade - de uma máquina para múltiplos data centers
FISL16 :: Escalabilidade - de uma máquina para múltiplos data centers
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 

Semelhante a Python e Golang - Parte 2

Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
Thiago Rondon
 

Semelhante a Python e Golang - Parte 2 (20)

Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
 
Congresso iv
Congresso ivCongresso iv
Congresso iv
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Pouch db tdc2016
Pouch db tdc2016Pouch db tdc2016
Pouch db tdc2016
 
Pouch db tdc2016
Pouch db tdc2016Pouch db tdc2016
Pouch db tdc2016
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
FastAPI: Criando microsserviços de alta performance
FastAPI: Criando microsserviços de alta performanceFastAPI: Criando microsserviços de alta performance
FastAPI: Criando microsserviços de alta performance
 
Workshop frontend
Workshop   frontendWorkshop   frontend
Workshop frontend
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
As Novidades do CSharp 5.0
As Novidades do CSharp 5.0As Novidades do CSharp 5.0
As Novidades do CSharp 5.0
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo real
 

Mais de Marcos Aurelio Barranco

Mais de Marcos Aurelio Barranco (12)

Criatividade na solução de problemas
Criatividade na solução de problemasCriatividade na solução de problemas
Criatividade na solução de problemas
 
Python e Golang - Parte 1
Python e Golang - Parte 1Python e Golang - Parte 1
Python e Golang - Parte 1
 
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piImpressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
 
Group by and order by desc with python pandas
Group by and order by desc with python pandasGroup by and order by desc with python pandas
Group by and order by desc with python pandas
 
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
 
O hábito saudável de correr
O hábito saudável de correrO hábito saudável de correr
O hábito saudável de correr
 
Como instalar o IRPF no Linux
Como instalar o IRPF no LinuxComo instalar o IRPF no Linux
Como instalar o IRPF no Linux
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Saindo da caixa para criar e inovar
Saindo da caixa para criar e inovarSaindo da caixa para criar e inovar
Saindo da caixa para criar e inovar
 
Coaching e a carruagem
Coaching e a carruagemCoaching e a carruagem
Coaching e a carruagem
 
Criatividade e inovacao
Criatividade e inovacaoCriatividade e inovacao
Criatividade e inovacao
 
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
 

Python e Golang - Parte 2

  • 1. A terra prometida da assíncronicidade e da concorrência: Python e Golang - Parte 2 Índice: 1. Concorrência 2. Síncrono versus Assíncrono 3. Exemplos de tecnologias Síncrona e Assíncrona 4. A terra prometida da assíncronicidade e da concorrência 5. Conclusão da parte 2 1. Concorrência “Concorrência é uma área desafiadora de desenvolvimento de software. Décadas de pesquisa e prática levaram a uma ampla variedade de modelos de concorrência, cada um com objetivos diferentes. A maioria centra-se em exatidão, facilidade de uso, ou mesmo, simplicidade. Um exemplo notável é a CSP (Comunicação de Processos Sequenciais, em que a abordagem de concorrência de GO é aproximadamente baseada)”. Fonte: www.python.org/dev/peps/pep-0554/ “A programação concorrente nunca foi tão importante quanto atualmente. ...explorar os muitos processadores de um computador moderno, que todo ano crescem em número, mas não em velocidade”. Fonte: Donovan, pag. 291, 2017 “O asyncio é uma biblioteca do Python para escrever código concorrente usando a sintaxe async/await. O asyncio é usado como uma base para várias estruturas assíncronas do Python que fornecem servidores de rede e Web de alto desempenho, bibliotecas de conexão de banco de dados, filas de tarefas distribuídas etc. O asyncio é muitas vezes um ajuste perfeito para código de rede estruturado de alto nível e vinculado a IO (Entrada e Saída)”. Fontes: https://docs.python.org/3/library/asyncio.html https://docs.python.org/3/library/asyncio-dev.html
  • 2. 2. Síncrono versus Assíncrono Síncrono: Você está em uma fila para conseguir um ingresso de cinema. Você não pode conseguir um ingresso até que todos na frente de você recebam um, e o mesmo se aplica às pessoas na fila atrás de você. Assíncrono: Você está em um restaurante “à la carte” com muitas outras pessoas. Você pede a sua refeição. Outras pessoas também podem pedir a refeição delas, elas não precisam esperar que a sua refeição seja preparada e servida antes que elas possam pedir a delas. Na cozinha, os trabalhadores do restaurante estão continuamente cozinhando, servindo e recebendo pedidos. As pessoas receberão a refeição delas assim que a comida estiver devidamente cozida e pronta. Fonte: https://stackoverflow.com/questions/748175/asynchronous-vs- synchronous-execution-what-does-it-really-mean 3. Exemplo de tecnologias Síncrona e Assíncrona Síncrona: Sistemas informacionais orientados a eventos do usuário que executam uma tarefa e aguardam o retorno do resultado, bloqueando qualquer outro evento até que a tarefa seja concluída. Assíncrona no front-end: Na barra de pesquisas do Google, enquanto você digita os termos, várias sugestões de pesquisa são exibidas, esse processo é feito com programação assíncrona (AJAX - Asynchronous Javascript and XML). Assíncrona no back-end: a) Filas de tarefas assíncronas com sistemas Brokers, b) Frameworks nativamente assíncronos (tornado, aiohttp, NodeJS), bibliotecas assíncronas (asyncio) 4. A terra prometida da assíncronicidade e da concorrência
  • 3. Por que a assíncronicidade é importante? Porque um processo assíncrono não é blocante como ocorre no processo síncrono, ou seja, enquanto a tarefa não terminar o processo síncrono não pode passar para a tarefa seguinte. Porém, o processo síncrono é a opção correta quando a sincronicidade dos dados é uma questão fundamental. Quais são as tarefas que executadas de forma assíncrona oferecem um melhor desempenho computacional no ambiente da tecnologia da informação? a) Envio de e-mails, b) geração de relatórios complexos, c) processamento de vídeo e imagem, d) comunicação com APIs de terceiros (Spotify, Linkedin, Twitter, Instagram), gravação de blocos de dados em disco/ssd com checagem de sucesso assíncrona(tabela abaixo), Bloco de DB gravado síncrono Bloco de DB gravado assíncrono for i in 1 .. 100 loop write block X to disk and wait for the OS to tell us the operation is totally complete (the block is not buffered by the OS or anything, it is on disk) end loop for i in 1 .. 100 loop write block X and return immediately, don't wait end loop now wait for the 100 blocks to "call back" to us, let the OS do its work and wait. Fonte: https://asktom.oracle.com/pls/asktom/f? p=100:11:::::P11_QUESTION_ID:1257800375707 “O Python não era assíncrono nas primeiras versões. Na versão 3.5, o recurso assíncrono do Python se tornou estável com a biblioteca nativa asyncio. Na versão 3.7, essa biblioteca recebeu um grande conjunto de melhorias e se tornou muito simples no trato para com o desenvolvimento. Atualmente o Python está na versão 3.8 Nós temos o Django (Framework Web FullStack) e o Flask (Microframework Web), mas eles não suportam o paradigma assíncrono nativamente e para isso contam com o framework Celery (Fila de tarefas assíncronas) e Flower (Monitor em tempo real e Web Admin para Celery). O framework aiohttp é construído sobre a biblioteca nativa asyncio do Python e os programadores de Python não precisam mais se arrepender de não termos nenhum recurso como o NodeJS. Agora temos isso e tem melhor desempenho que o NodeJS. O NodeJS é uma ótima plataforma, mas se você for programador Python e não quiser mudar de Python para JavaScript/NodeJS, então o framework aiohttp é a resposta correta para você.”
  • 4. Fonte: http://www.discoversdk.com/blog/asynchronous-python-web- applications-with-aiohttp Importante destacar, em inglês, os seguintes parágrafos: “NodeJS is suitable only for async non blocking interaction e.g. with MongoDb. Don't use it with RDBMS” Fonte: https://stackoverflow.com/questions/18376042/are-relational- databases-a-poor-fit-for-node-js/39323415#39323415 aiopg is a library for accessing a PostgreSQL database from the asyncio (PEP-3156/tulip) framework. It wraps asynchronous features of the Psycopg database driver. Fonte: https://aiopg.readthedocs.io/en/stable/ 5. Conclusão da parte 2 Algumas tecnologias estão mais alinhadas com os seus respectivos “matchs” tecnológicos (Nginx/uWSGI/Django com PostgreSQL, Nginx/NodeJS com MongoDB (NoSQL DB), Nginx/asyncio com PostgreSQL/aiopg, Nginx/aiohttp com PostgreSQL/aiopg, Tornado com Websockets e NoSQL DBs). Cada produto open-source, citado aqui, está evoluindo fortemente pelo esforço dos membros das suas respectivas comunidades, gerando, inclusive, novos produtos por meio dos forks. Os “matchs” citados são usos comuns, não é uma regra, e podem variar, principalmente com a maturidade dos produtos. Criatividade e inovação em software e processos. Bibliografia: Donovan, Alan A. A.; Kernighan, Brian W.; Tradução: Lúcia A. Kinoshita, A Linguagem de Programação Go, Editora Novatec, 2017 Gostou? Dê um like! Fique a vontade em compartilhar e usar no seu estudo de caso. Apenas informe a fonte. Obrigado e sucesso! Ahhh eu tenho uma lista de desejo na Amazon: I have a wishlist at Amazon
  • 5. https://www.amazon.com.br/hz/wishlist/ls/2Y2J3ADYO50TH Could you do me a kindness? :-) Marcos Aurelio Barranco SP/SP 12/Agosto/2019 Atualizado em: 31/Agosto/2019