Sidekiq travailleur de ne pas arriver a déclenché
Je suis en utilisant Sidekiq pour mes travaux en arrière-plan:
J'ai un travailleur app/travailleurs/data_import_worker.rb
class DataImportWorker
include Sidekiq::Worker
sidekiq_options retry: false
def perform(job_id,file_name)
begin
#Some logic in it .....
end
end
Appelé à partir d'un fichier lib/parse_excel.rb
def parse_raw_data
#job_id and #filename are defined bfr
DataImportWorker.perform_async(job_id,filename)
end
Dès que j'ai un déclencheur de mon action le travailleur n'est pas appelé.. Redis est en cours d'exécution sur localhost:6379
Aucune idée pourquoi cela doit se passer. L'Environnement est Linux.
Est sidekiq en cours d'exécution? Que faut-il dire dans le journal? Avez-vous vérifier le redis, est le travail ajouté à la file d'attente:par défaut ?
Merci pour la réponse! oui sidekiq et redis les deux sont en cours d'exécution .. le travail est aussi de ne pas s'ajouter à la file d'attente par défaut... mais quand je déclencheur de travail à partir de la console ça fonctionne
Vous avez peut-être différentes bases de données ou les espaces de noms lors de l'exécution dans le développement et la production. Ou une autre file d'attente est mis en place.
ne pas obtenir de vous.. u peut élaborer s'il vous plaît?
Je fais référence à ceci: github.com/mperham/sidekiq/wiki/Advanced-Options
Merci pour la réponse! oui sidekiq et redis les deux sont en cours d'exécution .. le travail est aussi de ne pas s'ajouter à la file d'attente par défaut... mais quand je déclencheur de travail à partir de la console ça fonctionne
Vous avez peut-être différentes bases de données ou les espaces de noms lors de l'exécution dans le développement et la production. Ou une autre file d'attente est mis en place.
ne pas obtenir de vous.. u peut élaborer s'il vous plaît?
Je fais référence à ceci: github.com/mperham/sidekiq/wiki/Advanced-Options
OriginalL'auteur AnkitG | 2012-10-10
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire où Sidekiq fonctionne, mais quand j'ai appelé
perform_async
il n'a pas tout faire, sauf de retourtrue
.Le problème a été rspec-sidekiq a été ajouté à ma ":le développement, l' :test" du groupe. J'ai résolu le problème en déplaçant rspec-sidekiq à la ":test" groupe seulement.
J'ai eu exactement le même problème. J'ai eu à reconstruire mon bundle ainsi:
bundle install --without test
J'ai ajouté un lien vers cette réponse à github.com/mperham/sidekiq/wiki/... pour référence future
toute la journée, je me battais .... merci!!!!
je vous remercie pour la fourniture de votre réponse, j'ai été sur le point de jeter ma machine ou la fenêtre.
OriginalL'auteur
Commencer sidekiq à partir du répertoire racine de votre application Rails. Par exemple,
OriginalL'auteur
Je rencontre le même problème, il s'avère que l'argument que j'ai passé dans la fonction perform_async n'est pas approprié, il semble que l'on ne doit pas passer n'importe quel résultat de la requête dans perform_async, vous devez faire toutes les requêtes dans la fonction à exécuter.
OriginalL'auteur
Vous devez spécifier le nom de la file d'attente que le travailleur est pour.
Exemple:
sidekiq_options réessayer: false, :file d'attente => data_import_worker
data_import_worker peut être n'importe quel nom que vous voulez donner.
Puis quand vous allez à l'interface web: yoursite.com/sidekiq, vous serez en mesure de voir les travailleurs de la file d'attente "data_import_worker"
OriginalL'auteur
Pour moi lors d'une perform_later, il serait mettre en file d'attente, mais ne jamais supprimer de la file d'attente. J'ai besoin d'ajouter mon nom de file d'attente à la sidekiq.fichier yml
OriginalL'auteur
Perdu un bon 15 min. Pour vérifier si Sidekiq est chargé correctement votre fichier de configuration (avec les files d'attente des noms), accédez à l'interface web dans la Occupé onglet et vous trouverez votre ID de Processus et ci-dessous, vous trouverez vos files d'attente.
Dans notre cas, nous avons eu mal orthographié
mailer
(la bonne ActiveJob file d'attente pour les Expéditeurs estmailers
, au pluriel).OriginalL'auteur
Ma question était simplement d'avoir le travailleur de fichiers dans le mauvais chemin.
Doit être dans "project_root/app/travailleur/travailleuse.rb", pas "project_root/travailleur/travailleuse.rb"
Vérifiez le chemin d'accès au fichier!
OriginalL'auteur
est-il vraiment exécuter plusieurs travailleurs sur les sidekiq?
par exemple, j'ai 2 travailleurs:
ProccessWorker
CallbackWorker
quand je suis runnigs sidekiq:
bundle exec sidekiq -r ./les travailleurs/proccess_worker.rb -C ./config/sidekiq.yml
un seul travailleur en même temps.
OriginalL'auteur
Je appeler
perform_async(23)
dans une production de la console, mais ma sidekiq a été démarré en mode mise en attente.Après que j'ai commencé le Sidekiq au mode de production, les choses ont commencé à travailler très bien.
OriginalL'auteur