Palestra feita no Mutirão PyCursos 2013, ela tem como objetivo introduzir os aspectos do non-blocking I/O aplicados ao desenvolvimento web e mostrar como o Tornado pode lhe ajudar a construir soluções mais completas.
O Tornado é um framework web non-blocking escrito para lidar com milhares de conexões simultâneas. Iremos conhecer as camadas mais baixas do framework (ioloop, iostream, stack_context, gen, timers, ...) entender como elas funcionam e como podemos utilizá-las.
14. callback passing style
dfsatfo:
e tr(o)
#d sufwt foadwe dn cl tenx fnto
o tf ih o n hn ow al h et ucin
sufclbc=etse,dt=o)
tf(alaknx_tp aafo;
dfnx_tpbr:
e etse(a)
#cl mr_tf t prebr
al oesuf o as a
mr_tf(alakls_tp dt=a)
oesufclbc=atse, aabr
dfls_tpbz:
e atse(a)
#sn tersos
ef h epne
sn_epnebz
edrsos(a)
#e orhnlrko w aedn
lt u ade nw e r oe
fns(
iih)
marcelnicolay.com
15. IOLoop
An I/O event loop for nonblocking sockets.
core da camada de rede do tornado
rápido e fácil de usar
uma instância por processo
crossplataforma
código aberto
client libraries & server applications
marcelnicolay.com
16. IOLoop
ipr ero
mot rn
ipr fntos
mot ucol
ipr sce
mot okt
fo traoipr ilo
rm ond mot oop
dfhnl_oncincneto,ades:
e adecneto(oncin drs)
pit"e cneto..
rn nw oncin."
dfcneto_ed(ok f,eet)
e oncinraysc, d vns:
wieTu:
hl re
ty
r:
cneto,ades=sc.cet)
oncin drs okacp(
ecp sce.ro,e
xet okterr :
i eag[]nti (rn.WUDLC,eroEGI)
f .rs0 o n eroEOLBOK rn.AAN:
rie
as
rtr
eun
cneto.ebokn()
oncinstlcig0
hnl_oncincneto,ades
adecneto(oncin drs)
sc =sce.oktsce.FIE,sce.OKSRA,0
ok oktsce(oktA_NT oktSC_TEM )
sc.escotsce.O_OKT sce.ORUEDR 1
okstokp(oktSLSCE, oktS_ESAD, )
sc.ebokn()
okstlcig0
sc.id(" 88)
okbn(", 88)
sc.itn18
oklse(2)
i_op=ilo.Oopisac(
olo oopILo.ntne)
clbc =fntosprilcneto_ed,sc)
alak ucol.ata(oncinray ok
i_opadhnlrsc.ieo) clbc,i_opRA)
olo.d_ade(okfln(, alak olo.ED
i_opsat)
olo.tr(
marcelnicolay.com
18. IOStream: a very simple HTTP client
fo traoipr ilo
rm ond mot oop
fo traoipr isra
rm ond mot otem
ipr sce
mot okt
dfsn_eus(:
e edrqet)
sra.rt(GT/HT/.Hs:finfe.o"
temwie"E TP10rnot rededcmrnrn)
sra.edutl"rnrn,o_edr)
temra_ni(" nhaes
dfo_edr(aa:
e nhaesdt)
haes={
edr }
frln i dt.pi(":
o ie n aaslt"rn)
prs=ln.pi(:)
at ieslt""
i lnprs = 2
f e(at) = :
haesprs0.ti(]=prs1.ti(
edr[at[]srp) at[]srp)
sra.edbtsithaes"otn-egh],o_oy
temra_ye(n(edr[CnetLnt") nbd)
dfo_oydt)
e nbd(aa:
pitdt
rn aa
sra.ls(
temcoe)
ilo.Oopisac(.tp)
oopILo.ntne)so(
s=sce.oktsce.FIE,sce.OKSRA,0
oktsce(oktA_NT oktSC_TEM )
sra =isra.Otems
tem otemISra()
sra.onc("rededcm,8) sn_eus)
temcnet(finfe.o" 0, edrqet
ilo.Oopisac(.tr(
oopILo.ntne)sat)
26. tornado.netutil.TCPServer
A nonblocking, singlethreaded TCP server.
fo traoipr ilo
rm ond mot oop
fo traoipr nttl
rm ond mot eui
casEhSre(eui.CSre)
ls coevrnttlTPevr:
dfhnl_temsl,sra,ades:
e adesra(ef tem drs)
sl.sra =sra
ef_tem tem
sl.ra_ie)
ef_edln(
df_edln(ef:
e ra_iesl)
sl.sra.edutl'n,sl.hnl_ed
ef_temra_ni(' ef_adera)
df_adera(ef dt_n:
e hnl_edsl, aai)
sl.sra.rt(Yusn:%'%dt_n
ef_temwie'o et s aai)
sl.ra_ie)
ef_edln(
i _nm_ = '_an_:
f _ae_ = _mi_'
sre =EhSre(
evr coevr)
sre.itn20)
evrlse(07
ilo.Oopisac(.tr()
oopILo.ntne)sat)
marcelnicolay.com