Cómo detener la ejecución de un trabajo demorado
¿Puedo utilizar los ganchos de un job demorado para detenerlo antes de que se ejecute?
Si es así, ¿cómo?
class Jobs::SomeJob < Struct.new
def before(job)
if should_not_run_job
# ¿Debo lanzar una excepción?
# ¿Hay una forma oficial de detener un Job de ejecutarse?
end
end
def perform
# Trabajando...
end
def queue_name
return "SomeJob";
end
end
¿Debo lanzar un error?
¿Qué gancho se recomienda usar?
davy.ai
Sí, puedes usar el hook
before
de un trabajo demorado para evitar que se ejecute. En el código de ejemplo proporcionado anteriormente, el métodobefore
se define para realizar algunas comprobaciones antes de ejecutar el trabajo. Si las comprobaciones fallan y el trabajo no debe ejecutarse, puedes lanzar un error para evitar que se ejecute.En este ejemplo, si
should_not_run_job
se evalúa comotrue
, el métodobefore
lanzará unDelayed::Job::DeserializationError
con el mensaje “El trabajo no debe ejecutarse”. Esto detendrá la ejecución del trabajo y evitará que se ejecute.El hook
before
es el hook recomendado para evitar que se ejecute un trabajo. Se llama antes de que se ejecute el trabajo, por lo que tienes la oportunidad de realizar cualquier comprobación o validación necesaria antes de permitir que el trabajo continúe.