2008-09-25 4 views
2

J'ai une tâche planifiée backroundrb qui prend un certain temps à s'exécuter. Cependant, il semble que le processus se termine après seulement 2,5 minutes.Fin de la tâche planifiée en arrière-plan

Mon fichier background.yml:

:schedules: 
    :named_worker: 
    :task_name: 
     :trigger_args: 0 0 12 * * * * 
     :data: input_data 

J'ai zéro activité sur le serveur lorsque le processus est en cours d'exécution. (Ce qui signifie que je suis le seul sur le serveur à regarder les fichiers journaux faire leur chose jusqu'à ce que le processus s'arrête soudainement.)

Des idées?

+0

vous devez donner plus d'indices. – liangzan

Répondre

3

Il n'y a pas beaucoup d'informations ici qui nous permettent d'aller au fond du problème. Parce que backgroundrb fonctionne en arrière-plan, il peut être assez difficile à surveiller/déboguer.

Voici quelques idées que j'utilise:

  1. Ecrire un test unitaire pour tester le code de travail lui-même et assurez-vous qu'il n'y a aucun problème là-bas
  2. PUT « puts » déclarations à plusieurs points du code afin vous pouvez au moins voir des réponses pendant que le travailleur est en cours d'exécution.
  3. Enveloppez l'ensemble du travailleur dans un bloc begin..rescue..end afin de pouvoir détecter les erreurs qui pourraient survenir et réduire le processus.
+0

Vous pouvez également expérimenter avec le code en question dans la console (l'exécuter délibérément au lieu d'attendre qu'il s'exécute en arrière-plan) pour voir les choses arriver. –

0

Merci Andrew. Ces conseils de débogage ont aidé. Surtout le début..rescue..end bloc.

C'était quand même une douleur à déboguer. À la fin, ce n'était pas BackgroundRB qui coupait court après 2,5 minutes. Une connexion réseau a été établie qui n'était pas fermée correctement. Une fois que cela a été trouvé et fermé, tout fonctionne très bien.