Algo medio offtopic pero importante que está bueno tener en cuenta en estos casos es que durante el request que estarías generando tu app se bloquea hasta que recibe respuesta, y si es un servicio externo (y "servicio externo" queda a definición de cada uno :D) no podés saber ni acotar cuánto va a tardar, por lo que la respuesta de tu request queda atada a algo que no controlás (y seguramente pueda llegar a ser considerable).
Esto puede provocar que tengas requests que superen el segundo (que es como el threshold de alerta), ¡*y no es tu culpa*!; lo que implica que, dado que casi todas las formas que tenés para servir apps en Rails son bloqueantes**, si tenés una cantidad considerable de requests en ese action particular (el que puede tardar), tu aplicación puede parecer colgada por que todos los procesos están esperando respuesta de este servicio. Esto provoca que tu server se encuentre prácticamente ocioso pero sin poder atender requests... Conclusión: toda tarea que no podamos acotar en el tiempo (o que sí podamos, pero supere una barrera de 1 segundo o lo que te parezca) deben ejecutarse en diferido. Para esto tenés varias soluciones (Delayed::Job con su send_later me gusta, también tenés Workling, BackgroundJob si no me equivoco, uno más viejo es BackgrounDRB, etc). Esto es más fácil decirlo que hacerlo. Conviene preverlo desde un principio. Nacho ** nunca me metí con JRuby (JRuby tendría la posibilidad de utilizar múltiples threads para atender requests, pero igualmente no es una solución mágica tampoco) 2010/3/18 Mariano Ayesa <[email protected]> > Holas > > Que tal? Tengo que hacer lo siguiente, y como es la primera vez que > lo hago.. necesito si me tiran una punta :) > > Desde un controller de Rails, tengo que preparar unos datitos y > mandarlos via post a una url que no está en mi app, y dependiendo del > response, hacer otras cosas en mi app.. > > Googleando, encontré > > http://api.rubyonrails.org/classes/ActionController/Integration/Session.html > pero no entiendo como usar esto desde mi controller.. (en caso que > sea esa la solucion) > > Gracias, > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
