1

Je suis actuellement en utilisant un serveur site5 et voudrais rake jobs:work à peu près tout le temps en cours d'exécution. Actuellement, je ne peux pas envoyer les tâches, sauf si je suis connecté au serveur. J'espère que quelqu'un là-bas peut m'aider avec ça. Avait beaucoup de problèmes avec ar_mailer et la gemme whenever ... mais avoir environ 5 autres gemmes fonctionnant parfaitement dans mon application rails.Delayed_Job - sur site5 serveur

quelqu'un peut-il faire la lumière sur une solution pour cela s'il vous plaît? grandement apprécié. (installé delayed_job comme plugin)

Répondre

1

OK j'ai une solution de contournement pour cela, il est le meilleur que je peux le faire, mais cela fonctionne dans une certaine mesure ... Je servais d'emplois CRON et un fichier script/de jobrunner personnalisé.

J'ai créé le jobrunner script situé à script/jobrunner qui contient le

suivant
#!/usr/bin/env ruby 
require File.dirname(__FILE__) + '/../config/environment' 
Delayed::Worker.new.start 

Puis, dans une tâche cron je l'ai fait exécuter ce fichier.

Dans le rapport de cron, je reçois encore quelques erreurs, mais les travaux courent et je suis heureux avec ça! Le travail cron s'exécute toutes les heures à la 50ème minute par exemple, et il parcourt tous les fichiers delayed_jobs de la table et les traite. C'est la meilleure solution de contournement que j'ai trouvée à mon problème. J'espère que cela aidera quelqu'un dans le futur.

Aller voir les autres scripts que je peux créer pour les tâches quotidiennes/hebdomadaires.

1

Si vous utilisez capistrano, démarrez delayed_job lorsque votre application est déployée. Ajoutez ceci à votre fichier de recette de déploiement.

require 'delayed/recipes' 
after "deploy:stop",  "delayed_job:stop" 
after "deploy:start",  "delayed_job:start" 
after "deploy:update_code", "delayed_job:stop" 
after "deploy:restart",  "delayed_job:start" 
+0

Vous n'utilisez malheureusement pas capistrano. Et quand je lance script/delayed_job start ou script/delayed_job restart aucune erreur n'est levée, cependant le worker ne s'exécute pas en arrière-plan. J'ai toujours le sentiment qu'il me manque quelque chose. De plus, quand je lance script/delayed_job, j'obtiens une "constante non initialisée Delayed :: Backend :: ActiveRecord :: Base" il doit y avoir quelque chose de simple qui me manque. Merci pour cette tentative. –

+0

Essayez la fourchette http://github.com/collectiveidea/delayed_job. Il est sous développement lourd et actif pour le rendre plus robuste. –

+0

Merci encore Jonathan, j'utilise celui-ci et pas le tobi pour cette raison précise. Il traite le delayed_job et le met dans la table, le seul problème que j'ai est que je veux que le worker fonctionne tout le temps sans avoir à continuer à appeler "rake jobs: work". Je peux régler le retard dans l'initialiseur de configuration ce n'est pas le problème, même avec la mise en place d'un travail cron pour ce faire, pour une raison quelconque, il ne veut pas travailler ... :( –

1

Le travail différé est livré avec un script pour démarrer en arrière-plan et se connecter à log/delayed_job.log. Vous pouvez démarrer un travail_de_démonisé en cours de développement en mode de développement comme ceci:

RAILS_ENV=development script/delayed_job start 
Questions connexes