Confusión con Active Jobs

9 views
Skip to first unread message

Johan Donado B.

unread,
Sep 11, 2018, 6:59:23 PM9/11/18
to ror-es

Saludos.

He estado leyendo sobre Active Jobs porque necesito poner a ejecutar solicitudes muy pesadas en segundo plano, pero por más que he buscado y leído en Internet, entre más leo más me enredo.

Alguien me puede por favor ayudar con algunos ejemplos o documentación clara para ejecutar en windows (ambiente de desarrollo) y en linux (producción).

Muchas gracias.

Xavier Noria

unread,
Sep 12, 2018, 6:40:00 AM9/12/18
to ror...@googlegroups.com
Hola Johan,

La idea fundamental para entender Active Job es que ofrece

    * una API generica para definir tareas

    * una API generica para encolarlas

Ahi, "generica" significa que no depende del backend escogido, de una manera parecida a como la API de Active Record no depende del driver de base de datos. Anter de tener Active Job, si querias usar Sidekiq tenias que escribir codigo de Sidekiq.

El comando particular para ejecutar las tareas no lo provee Rails, sino el backend mismo. Si estas usando Sidekiq, por ejemplo, tienes que averiguar como se lanza Sidekiq en Windows y en Linux, eso tienes que buscarlo en su documentacion.

De manera que por un lado, en la aplicacion las tareas estan definidas, y en los momentos oportunos se encolan. Y luego, por otro, alguien tiene que lanzar el comando del backend que consume las tareas y las va procesando (esto, exceptuando el backend :inline).

Las tareas que desees ejecutar en segundo plano se definen por convenio en `app/jobs`. Si defines el envio asincrono de mails de bienvenida en la clase SendWelcomeEmailJob, el codigo que gestiona el alta de un usuario en algun momento ejecturara SendWelcomeEmailJob.perform_later(user), que encola la tarea y no bloquea (salvo que el backend sea sincrono, como lo es el :inline), y el daemon que alguien ha lanzado en algun momento y que esta consumiendo jobs, eventualmente pillara ese y lo ejecutara.

La documentacion oficial de Active Job se encuentra en esta guia


espero que con este mail de situacion puedas seguirla.

Xavier

Johan Donado B.

unread,
Sep 12, 2018, 6:47:46 AM9/12/18
to ror...@googlegroups.com
Saludos. Muchas gracias por responder.

Entonces ActiveJob trata de unificar el uso pero sigue dependiendo de otro programa en el backend, y tengo que buscar documentación de ese programa backend?

Entonces debo ejecutar en mi app los comandos de ActiveJob o los comandos del programa Backend?

Gracias 


--
--
You received this message because you are subscribed to the Google
Groups "ror-es" group.
To post to this group, send email to ror...@googlegroups.com
To unsubscribe from this group, send email to
ror_es+un...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/ror_es?hl=en
Rails no escala.

---
You received this message because you are subscribed to a topic in the Google Groups "ror-es" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ror_es/KJeERcPKpEo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ror_es+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Xavier Noria

unread,
Sep 12, 2018, 7:00:33 AM9/12/18
to ror...@googlegroups.com
2018-09-12 12:47 GMT+02:00 Johan Donado B. <jdon...@gmail.com>:

Saludos. Muchas gracias por responder.

Entonces ActiveJob trata de unificar el uso pero sigue dependiendo de otro programa en el backend, y tengo que buscar documentación de ese programa backend?

Si. De la misma manera que para usar Active Record con MySQL tendras que saber algo de MySQL y tener nociones de SQL.

Si usas Sidekiq, has de saber minimamente como funciona Sidekiq para saber lo que estas programando, y como montarlo. Sidekiq requiere un servidor Redis por ejemplo, por lo tanto has de montar uno y configurar tu aplicacion adecuadamente. Tu aplicacion serializa los jobs a Redis (la API de Active Job encapsula esto), los workers son instanciados transparentemente, pero has de saber que existe un comando de Sidekiq que consulta Redis y va ejecutando jobs.

Luego, si, has de leer documentacion de tu backend.

Entonces debo ejecutar en mi app los comandos de ActiveJob o los comandos del programa Backend?

La aplicacion usa la API de Active Job para definir y encolar jobs. El programa de linea de comandos que se ha de ejecutar para que los jobs se procesen lo provee el backend. La guia tiene enlaces pertinentes en la seccion que trata esto.

Johan Donado B.

unread,
Sep 12, 2018, 7:11:45 AM9/12/18
to ror...@googlegroups.com
Muchas gracias. Me ayudó a enfocarme. 👍

--
Reply all
Reply to author
Forward
0 new messages