SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Web, escalabilidade e NoSQL


 possibilidades com Python


       Gustavo Pinto
       @gustavopinto
gustavopinto
Web - integração de serviços




o que usar?
Web - integração de serviços

ReST:
Web - integração de serviços

ReST:




 https://github.com/caelum/restfulie-python
Web - integração de serviços
>>> response = Restfulie.at(resource_uri).get()
>>> print response.body
<palestra>
   <nome>Possibilidade com Python</nome>
   <evento>PythonBR</evento>
   <local>Amcham - Sao Paulo</local>
   <link rel="self" href="http://www.slideshare.com.
br/gustavopinto/pythonBR" />
</order>
Web - social machines

API Twitter
API Facebook
Api Twitter
Api Facebook

graph = facebook.GraphAPI(oauth_access_token)
profile = graph.get_object("me")
friends = graph.get_connections("me", "friends")
graph.put_object(profile, "feed", message="Live from
pythonBrasil[7] !")




      https://github.com/facebook/python-sdk
Web - social machines
1- Release
Escalabilidade

"[...] sistemas que estão
preparados para crescer."
Escalabilidade

"[...] sistemas que estão
preparados para crescer."
Escalabilidade

"[...] sistemas que estão
preparados para crescer."
Escalabilidade, plugável?
Escalabilidade, plugável?
Perguntas

● você faz caching?
● você está preocupado com a
  arquitetura multicore?
● você conhece seu framework?
Caching

● Varnish
● MemCached
Caching

● Varnish
● MemCached
Caching

● Varnish
● MemCached




Essa é sua
necessidade?
Multicore - Paralelismo
Paralelismo

                              700 R$




 ● uma aplicação single-threaded vai ser executada
   somente em um único processador, não importa
   quantos processadores estejam disponíveis.
Paralelismo

                              700 R$




 ● uma aplicação single-threaded vai ser executada
   somente em um único processador, não importa
   quantos processadores estejam disponíveis.

 ● lembrando que, concorrência != paralelismo
Paralelismo
 ● Python built-in
    ○ threading
    ○ multiprocessing (Python 2.6)
 ● pypar
 ● pyMPI
 ● mpi4py

http://wiki.python.org/moin/ParallelProcessing
Paralelismo
def expo(x):
return x ** 2

[expo (i) for i in range(100000)]
Paralelismo
from multiprocessing import Pool

def expo(x):
return x ** 2

pool = Pool()
roots = pool.map(expo, range(100000))
print roots
Paralelismo
from multiprocessing import Pool

def expo(x):
return x ** 2

pool = Pool()
results = [pool.apply_async(expo, (x,))
for x in range(100000)]
roots = [r.get() for r in results]
print roots
Paralelismo
from multiprocessing import Pool

def expo(x):
                       Mas eu podia ter feito isso usando
return x ** 2
                       threads..
pool = Pool()
results = [pool.apply_async(expo, (x,))
for x in range(100000)]
roots = [r.get() for r in results]
print roots
Framework
NoSQL

Mas, o que é NoSQL?
NoSQL

Mas, o que é NoSQL?


             +
NoSQL

Mas, o que é NoSQL?


             +
NoSQL

Mas, o que é NoSQL?


             +
NoSQL



        ?
NoSQL

● top-level project
● desenhado para tratar volume de dados muito grande
● espalhados através de vários servidores
● fornecendo um serviço altamente disponível
● sem nenhum ponto único de falha.
NoSQL

● top-level project
● desenhado para tratar volume de dados muito grande
● espalhados através de vários servidores
● fornecendo um serviço altamente disponível
● sem nenhum ponto único de falha.
NoSQL

● top-level project
● desenhado para tratar volume de dados muito grande
● espalhados através de vários servidores
● fornecendo um serviço altamente disponível
● sem nenhum ponto único de falha.




Eventualmente consistente..
NoSQL
NoSQL

                1. Keyspace
                2. Column Family
                3. Column Family Row
                4. Column
    2

1       3
            4
NoSQL - Cassandra (Thrift)

def main:
socket = TSocket.TSocket("localhost", 9160)
transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocolAccelerated
(transport)
client = Cassandra.Client(protocol)
NoSQL - Cassandra (Thrift)
keyspace = "Keyspace1"
column_path = ColumnPath(column_family="PrimeiroNivel",
column="nome")

key = "1"
value = "Gustavo Pinto"
timestamp = time.time()

try:
transport.open()
client.insert(keyspace,key, column_path, value, timestamp,
ConsistencyLevel.ZERO)
NoSQL - Cassandra (Thrift)
#read

column_parent = ColumnParent(column_family="
PrimeiroNivel")
slice_range = SliceRange(start="", finish="")
predicate = SlicePredicate(slice_range=slice_range)
result = client.get_slice(keyspace, key, column_parent,
predicate, ConsistencyLevel.ONE)
NoSQL - Cassandra
NoSQL - Cassandra




mas, essa é a
sua necessidade?
Possibilidades com python

Mais conteúdo relacionado

Mais procurados

Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - AmbientesDirceu Belém
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesDevCamp Campinas
 
Fazendo Analise de dados SÓ com Python (Just Python)
Fazendo Analise de dados SÓ com Python (Just Python)Fazendo Analise de dados SÓ com Python (Just Python)
Fazendo Analise de dados SÓ com Python (Just Python)Cesar Augusto
 
Interfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.FormsInterfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.Formsakamud
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)JugVale
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPFelipe Zampa
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosFernando Mercês
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming mattersJean Carlo Machado
 

Mais procurados (13)

Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - Ambientes
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional Interfaces
 
Fazendo Analise de dados SÓ com Python (Just Python)
Fazendo Analise de dados SÓ com Python (Just Python)Fazendo Analise de dados SÓ com Python (Just Python)
Fazendo Analise de dados SÓ com Python (Just Python)
 
Interfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.FormsInterfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.Forms
 
Jug bizus
Jug   bizusJug   bizus
Jug bizus
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Git para quem gosta de Git
Git para quem gosta de GitGit para quem gosta de Git
Git para quem gosta de Git
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOP
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutos
 
dnad12
dnad12dnad12
dnad12
 
Why functional programming matters
Why functional programming mattersWhy functional programming matters
Why functional programming matters
 

Semelhante a Possibilidades com python

PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonBruno Rocha
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresqlGerdan Santos
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Davy Alvarenga Machado
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Cristiano Rafael Steffens
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Scala na soundcloud [QCon]
Scala na soundcloud [QCon]Scala na soundcloud [QCon]
Scala na soundcloud [QCon]Herval Freire
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeIgor Nicoli
 
Scala @ soundcloud [scaladores]
Scala @ soundcloud [scaladores]Scala @ soundcloud [scaladores]
Scala @ soundcloud [scaladores]Flavio W. Brasil
 
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!iMasters
 
Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Rodrigo Senra
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Integração de sistemas legados com Plone
Integração de sistemas legados com PloneIntegração de sistemas legados com Plone
Integração de sistemas legados com PloneFabiano Weimar
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLErick Belluci Tedeschi
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Rodrigo Senra
 

Semelhante a Possibilidades com python (20)

PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com Python
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Scala na soundcloud [QCon]
Scala na soundcloud [QCon]Scala na soundcloud [QCon]
Scala na soundcloud [QCon]
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Scala @ soundcloud [scaladores]
Scala @ soundcloud [scaladores]Scala @ soundcloud [scaladores]
Scala @ soundcloud [scaladores]
 
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
 
Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Integração de sistemas legados com Plone
Integração de sistemas legados com PloneIntegração de sistemas legados com Plone
Integração de sistemas legados com Plone
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
 

Mais de UFPA

Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...
Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...
Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...UFPA
 
More Common Than You Think: An In-Depth Study of Casual Contributors
More Common Than You Think: An In-Depth Study of Casual ContributorsMore Common Than You Think: An In-Depth Study of Casual Contributors
More Common Than You Think: An In-Depth Study of Casual ContributorsUFPA
 
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...UFPA
 
Python simplecv
Python simplecvPython simplecv
Python simplecvUFPA
 
Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?UFPA
 
Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? UFPA
 
Beljug2010
Beljug2010Beljug2010
Beljug2010UFPA
 
Grails from scratch
Grails from scratchGrails from scratch
Grails from scratchUFPA
 
A computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirA computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirUFPA
 

Mais de UFPA (9)

Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...
Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...
Evidence Briefings: Towards a Medium to Transfer Knowledge from Systematic Re...
 
More Common Than You Think: An In-Depth Study of Casual Contributors
More Common Than You Think: An In-Depth Study of Casual ContributorsMore Common Than You Think: An In-Depth Study of Casual Contributors
More Common Than You Think: An In-Depth Study of Casual Contributors
 
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
What Programmers Say About Refactoring Tools? An Empirical Investigation of ...
 
Python simplecv
Python simplecvPython simplecv
Python simplecv
 
Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?Porque aprender haskell me fez um programador python melhor?
Porque aprender haskell me fez um programador python melhor?
 
Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore? Are Java Programmers Transitioning to Multicore?
Are Java Programmers Transitioning to Multicore?
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Grails from scratch
Grails from scratchGrails from scratch
Grails from scratch
 
A computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguirA computacao e_voce_caminhos_para_seguir
A computacao e_voce_caminhos_para_seguir
 

Possibilidades com python