[pyar] Algunas dudas con Tornado

Luis Masuelli luismasuelli en hotmail.com
Mar Dic 30 20:07:18 ART 2014


Ah no si, con eso no tenia duda. En mi ejemplo puse esos dos puntos de yield como un ejemplo de que por ahí necesitaría varios yield para varias operaciones distintas (y schedulear cada tanto). Te pongo un ejemplo: hay operaciones de calculo pesado que no me son aptas para resolver con numpy y no tienen nada que ver con IO o cosas asi (terminan siendo codigo. Si quisiera hacer algo como un juego de poker, sería un buen ejemplo).
Para estos casos yo pensé en re-schedulear cada tanto poniendo algunos yields (por eso la posibilidad de yields que trabajen con valores inmediatos - pensado puramente como una excusa para forzar una re-scheduleada/cambio-de-contexto y que deje paso a otras cosas).
Con cambiar eso que tenia mal ya me anda perfecto :D.

> Date: Tue, 30 Dec 2014 19:47:58 -0300
> From: klaussfreire en gmail.com
> To: pyar en python.org.ar
> Subject: Re: [pyar] Algunas dudas con Tornado
> 
> 2014-12-30 19:35 GMT-03:00 Luis Masuelli <luismasuelli en hotmail.com>:
> > Gracias! Igual me equivoqué (y de ahí el tema q tengo) - los valores cedidos
> > no son automáticamente pasados a maybe_future. De ahí que tenga esa
> > excepción.
> 
> Claro, pero no importa.
> 
> El pedazo de código importante es el que no estás mostrando, el de
> "expresionQueDevuelveUnValorInmediato" y
> "expresionQueDevuelveUnFuturo".
> 
> Por eso agregué los ejemplos.
> 
> En general, si la función es un @gen.coroutine, tenés que hacer el
> yield como lo hiciste:
> 
> a = yield hacer(blah)
> 
> Si es una función normal que no se bloquea (que devuelve un valor, no
> un future, y rápido), no tenés que hacer nada raro:
> 
> a = hacer(blah)
> 
> El tema es cuando la función no es ni un coroutine ni una función
> regular rápida, sino algo que hace I/O bloqueante.
> 
> En esos casos tenés que usar un threadpool:
> 
> >> threadpool = concurrent.futures.thread.ThreadPoolExecutor(8)
> >>
> >> def _hacerloPesado():
> >>     # blabla
> >>     return 10
> >> def hacerAlgoPesado():
> >>     return threadpool.submit(_hacerloPesado, 3, 4, 5)
> 
> O una librería que funcione async-mente, como las libs de tornado mismas:
> 
> response = yield AsyncHTTPClient().fetch("http://example.com/")
> 
> Todo depende de qué exactamente querés hacer.
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
> 
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> 
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20141231/6be5dec3/attachment-0001.html>


More information about the pyar mailing list