interrogation avec delayed_job

J'ai un processus qui prend généralement quelques secondes pour terminer donc, je suis en train d'utiliser delayed_job pour gérer de manière asynchrone. Le travail en lui-même fonctionne très bien, ma question est de savoir comment aller à ce sujet de l'interrogation du travail pour savoir si c'est fait.

Je peux obtenir un id de delayed_job simplement de l'affecter à une variable:

travail = Disponible.retard.dosomething(:var => 1234)

+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+
| id   | priority | attempts | handler    | last_error | run_at      | locked_at | failed_at | locked_by | created_at | updated_at  |
+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+
| 4037 | 0        | 0        | --- !ru... |            | 2011-04-... |           |           |           | 2011-04... | 2011-04-... |
+------+----------+----------+------------+------------+-------------+-----------+-----------+-----------+------------+-------------+

Mais dès qu'il a terminé le travail, il le supprime et à la recherche pour les enregistrements renvoie une erreur:

@job=Delayed::Job.find(4037)

ActiveRecord::RecordNotFound: Couldn't find Delayed::Backend::ActiveRecord::Job with ID=4037

@job= Delayed::Job.exists?(params[:id])

Dois-je la peine de changer cela, et peut-être de reporter la suppression de dossiers complets? Je ne suis pas sûr de la façon que je peux obtenir une notification de son statut. Ou est l'interrogation d'une mort enregistrement comme preuve de l'accomplissement ok? Quelqu'un d'autre face à quelque chose de similaire?

  • Un autre problème ou un obstacle, je fais face est, je suis à la compensation du travail parce qu'il est d'attacher mon serveur autrement. Je demande à la base de données si certaines données avec dates existent, s'ils ne sont pas ou ne sont pas à jour, j'extrais de nouvelles, mais comme une tâche distincte, j'utilise AJAX et j'sondage jusqu'à ce qu'il termine... et puis exécutez la requête pour les nouvelles données de nouveau. De le faire, espérons-le, plus rapide, mais aussi plus compliqué.
  • Serait-il plus depuis utiliser quelque chose comme resque & redis et, essentiellement, le cache de l'objet retourné, épargne moi le supplément aller-retour à la DB et de rendre les bureaux plus vite? Je n'ai jamais touché redis ou resque, donc je pensais que je jette ce sort là.
InformationsquelleAutor holden | 2011-04-07