Sidekiq fonctionne parfaitement en mode développement. Maintenant que j'essaie de l'utiliser en production, tous les travaux sont simplement en attente et ne sont jamais exécutés. Quelqu'un pourrait-il m'indiquer dans la bonne direction comment résoudre ce problème?
Veuillez vérifier si le processus sidekiq est réellement en cours d'exécution:
ps aux | grep sidekiq
Si ce n'est pas le cas, essayez d'exécuter sidekiq au premier plan et vérifiez la sortie.
bundle exec sidekiq -e production
Dans de nombreux cas pour moi, c'est parce que je n'ai pas correctement déclaré la file d'attente pour ce service spécifique dans config/sidekiq.yml
.
Cette réponse semble pertinente: Sidekiq ne traite pas la file d'attente Si Sidekiq n'est pas informé du fichier de configuration (qui peut nécessiter une incantation différente en production), il se peut qu'il n'utilise pas la bonne file d'attente.
Juste un avertissement à tous alors que je finissais cette page en essayant de comprendre pourquoi mes Rails travaux Sidkiq ne se déplaçaient pas 'mis en file d'attente').
Ma solution:
1.) Regardez Sidekiq Web UI pour votre application (c'est là que vous pouvez voir le fait que les travaux entrent dans un état mis en file d'attente).
2.) Réessayez manuellement une tâche ayant échoué
3.) Inspectez les journaux sur le serveur exécutant Sidekiq:
(généralement, c'est là que le journal sera situé, si vous dites que vous faites cela lors de la mise en scène)
tail -f /var/www/yourappname/current/log/staging.log
C'est généralement là que vous verrez un message d'erreur plus détaillé expliquant pourquoi Sidekiq ne peut pas traiter les travaux mis en file d'attente. Dans notre cas, il y avait une variable d'environnement pointant vers un point de terminaison incorrect spécifique à notre configuration de déploiement.
En utilisant capistrano-sidekiq
gem a résolu notre problème