У меня есть действительно странная проблема на Heroku, что я крутил колеса, чтобы понять какое-то время.Справочная работа с Resque on Heroku
У моего приложения есть несколько внешних API-вызовов и почтовых программ, которые я установил для ActiveJob в фоновом режиме. На Heroku у меня есть два рабочих, и я использую компиляцию Resque/Redis для работы в соответствии с нижеприведенными фрагментами. Я использую дополнение Redis Cloud на Heroku.
Config/установка
PROCFILE
web: bundle exec puma -C config/puma.rb
resque: env TERM_CHILD=1 QUEUE=* bundle exec rake rescue:work
Библиотека/Задачи/resque.rake
require "resque/tasks"
require "resque/scheduler/tasks"
task "resque:setup": :environment do
Resque.before_fork = proc { ActiveRecord::Base.connection.disconnect! }
Resque.after_fork = proc { ActiveRecord::Base.establish_connection }
end
конфигурации/Инициализаторы/active_job.rb
Rails.application.config.active_job.queue_adapter = :resque
конфигурации/Инициализаторы/redis.rb
if ENV["REDISCLOUD_URL"]
$redis = Redis.new(url: ENV["REDISCLOUD_URL"])
end
конфигурации/Инициализаторы/resque.rb
if Rails.env.production?
uri = URI.parse ENV["REDISCLOUD_URL"]
Resque.redis = Redis.new(host: uri.host, port: uri.port,
password: uri.password)
else
Resque.redis = "localhost:6379"
end
Проблема
Проблема, которую я имею, когда пользователь использует приложение в браузере (т. е. взаимодействует с веб-работником) и за формирует действие, которое запускает одно из заданий ActiveJob, задание выполняется «inline» с использованием рабочего web
, а не работника resque
. Когда я запускаю определенный метод модели, который ставит в очередь задание в моей консоли приложений Heroku (открывается запуском heroku run rails console
), он добавляет задание в Redis и запускает его с использованием рабочего стола resque
, как и ожидалось.
Почему один способ работает правильно, а другой способ не работает? Я рассмотрел почти каждый вопрос/учебник по теме и попробовал все, чтобы любая помощь в получении рабочих заданий, но правильный рабочий был бы потрясающим!
Заранее благодарен!