2010-12-01 9 views
11

¿es posible en los raíles 2.3.X iniciar una nueva cadena de comandos después de que se ha procesado y devuelto al solicitante?Rails 2.3.X - ¿Ejecutar código después de que la solicitud fue procesada y devuelta?

Necesito esa característica para trabajar con una API asíncrona en el otro lado: esperan una respuesta a su solicitud y después de que la respuesta se complete mi aplicación de rieles debe enviarles una nueva solicitud HTTP (publicar algo en su API) ...

¿Cuáles son las posibilidades aquí? ¿Hay algo así como un gancho after_render? ¿Debo hacer uso de subprocesos o tareas en segundo plano y cómo se puede hacer esto?

estaría muy contenta por algunas soluciones :-)

Saludos cordiales

ACTUALIZACIÓN: El retorno de código (por ejemplo, 200.) Debe ser enviado al solicitante antes de que las otras llamadas se ejecutan

Respuesta

11

La cosa más fácil que hacer es generar un nuevo subproceso . Esto supone que es una llamada ligera y no necesita un registro de errores avanzado o una lógica de reintento.

Thread.new do 
    puts "call the api" 
end 
+0

sí, buena idea ... ahora estoy usando https://github.com/tra/spawn que hace exactamente esto como un complemento de rails – Bijan

1

Podría estar equivocado, pero creo que la ejecución del código continúa después de un renderizado, a menos que ponga una devolución. Es por esto que se obtiene un error si intenta renderizar dos veces ...

1

¿Está renderizando html? Si es así, quizás pueda insertar algo de javascript en la página representada para hacer una nueva solicitud a su controlador e iniciar la acción adicional que debe realizar.

+0

nope Estoy accediendo a una API basada en XML ... Así que no hay posibilidad de que js piratee o tan ... mi servidor tiene que hacer la solicitud de seguimiento. – Bijan

+0

Bummer. ¡Debo decir que esta otra API con la que estás trabajando suena bastante exigente! – CharlieMezak

Cuestiones relacionadas