Pregunta

Utilizo Sidekiq para ejecutar un método retrasado en el controlador (mientras tanto uso Redis para actualizar una barra de progreso).Este método llama a un servidor, recupera los datos, realiza algunas manipulaciones y cálculos;entonces puede tomar un tiempo.

Por ejemplo, tengo este método:

data_and_status = MyModelName.delay.retrieve_data(params[:tags], "preview", current_user, params[:from], params[:to])

Este método debería devolver los datos manipulados, pero haciéndolo de esta manera. data_and_status es un hash (supongo que es el ID de trabajo de Sidekiq).Los datos devueltos son muy grandes; desafortunadamente, realizar algo de almacenamiento en caché con Redis está fuera de discusión.

¿Cómo puedo recuperar un return value de un trabajo retrasado (método)?

¿Fue útil?

Solución

Dice que los datos devueltos (de su trabajo asincrónico) son muy grandes y que transmitirlos a través de Redis está fuera de discusión.Bueno, su trabajo sidekiq se ejecuta en un proceso diferente, posiblemente incluso en un servidor diferente, por lo que debe encontrar alguna forma entre procesos para transferir los datos; si no es su cola de mensajes (Redis), entonces la base de datos.

Por ejemplo:

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top