Rails: démarrage de Sidekiq sur Heroku
J'ai du mal à mettre Sidekiq en marche sur mon application Heroku deployed Rails. J'ai mon application qui fonctionne bien dans le développement (et sur Heroku sans Sidekiq).
j'ai créé un fichier Procfile avec:
worker: bundle exec sidekiq
si je cours heroku ps
, le seul que je vois est web.1
.
devrais-je en voir un pour Sidekiq?
j'obtiens une erreur:
Redis::CannotConnectError (Error connecting to Redis on localhost:6379)
dans Mon Journal D'Heroku.
mise à JOUR: j'ai Trouvé que j'probablement besoin d' heroku addons:add redistogo
. Toujours pas travailler. J'ai l'impression de rater une configuration de base.
y a-t-il quelque chose que je dois faire pour faire fonctionner Redis pour mon application Heroku?
J'utilise Redis / Sidekiq depuis environ un jour, donc c'est nouveau pour moi.
Merci!
Greg
6 réponses
Non vous n'avez pas besoin de config avec Heroku pour Sidekiq, il suffit d'ajouter le RedisToGo plugin et que vous êtes sur. N'oubliez pas d'attribuer au moins 1 travailleur à votre application dans votre config Heroku.
Voici mon fichier Procfile par défaut:
web: bundle exec thin start -p $PORT
worker: bundle exec sidekiq -c 5 -v
il est intéressant de vérifier si le processus de sidekiq est vraiment commencé avec cette commande:
heroku ps
S'il n'y a pas de worker, alors vous pourriez avoir besoin de lancer cette commande:
heroku ps:scale worker+1
il s'avère qu'il y a un bug dans L'UI web en ce que certains membres de l'équipe n'ont pas été autorisés à augmenter le nombre de travailleurs de 0 à 1, même si L'UI semblait le montrer!
A partir de la version 3.0 de sidekiq, il y a une étape supplémentaire, exécuter heroku config:set REDIS_PROVIDER=REDISTOGO_URL
dans la console.
voici le processus que j'ai utilisé pour les Rails 4:
Dans la console:
heroku addons:create redistogo
heroku config:set REDIS_PROVIDER=REDISTOGO_URL
Dans mon Procfile
j'ai ajouté:
worker: bundle exec sidekiq
Dans mon gemfile.rb
j'ai ajouté:
gem 'redis'
j'ai ajouté le fichier suivant, config/initializers/redis.rb
:
uri = ENV["REDISTOGO_URL"] || "redis://localhost:6379/"
REDIS = Redis.new(:url => uri)
Ici lien aux Docs de sidekiq.
Sons comme vous y êtes presque. Il se peut que vous ayez juste besoin de définir REDISTOGO_URL sur le Heroku config