Ответ 1
Вам нужно загрузиться sidekiq с очереди почтовых ящиков, чтобы получить эти задания:
bundle exec sidekiq -q default -q mailers
The Sidekiq Wiki описывает сценарии здесь.
У меня есть приложение rails, в котором у меня есть метод, по которому я отправляю много писем. Я хотел бы выполнить это действие asynchronously
. Для этого я пытался использовать Sidekiq
, но я не могу заставить его работать правильно - он не отправляет никаких писем.
Отправка электронной почты работала раньше, поэтому я уверен, что мои настройки электронной почты установлены правильно.
В моем gemfile
у меня есть это:
gem 'sidekiq'
И я запустил bundle install
. Я также установил redis
, следуя инструкциям RailsCasts # 366.
Я начал Sidekiq
с помощью следующей команды: bundle exec sidekiq
, это привело к тому, что можно увидеть на изображении ниже:
В application.rb
у меня есть следующее:
config.active_job.queue_adapter = :sidekiq
И я пытаюсь отправить электронные письма следующим образом:
Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later!
Я не получаю никаких ошибок, но электронные письма никогда не отправляются.
Итак, я что-то пропустил?
Вам нужно загрузиться sidekiq с очереди почтовых ящиков, чтобы получить эти задания:
bundle exec sidekiq -q default -q mailers
The Sidekiq Wiki описывает сценарии здесь.
Также вы можете изменить config/sidekiq.yml:
---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- default
- mailers
И запустите sidekiq -C config/sidekiq.yml