Вроде новичок в Rails, так что, пожалуйста, справьтесь со мной.То, что я делаю сейчас, это фоновая обработка некоторого кода на Ruby с использованием Resque.Чтобы запустить задачу Rescque rake, я использую (на heroku), у меня есть файл resque.rake с этим рекомендуемым кодом для встраивания в магическую (или странную) многопоточную архитектуру heroku:
require "resque/tasks"
require 'resque_scheduler/tasks'
task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
end
desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => "resque:work"
Поскольку мне нужен доступ к коду Rails, я ссылаюсь на: среду.Если я поставлю хотя бы 1 рабочий динам в фоновом режиме на героку, мой Resque отлично работает, очищается, все устраивает.Пока я не попытаюсь автоматизировать вещи ...
Так что я хотел развить код и автоматически заполнять очередь соответствующими задачами каждую минуту или около того.Сделав это (без использования cron, потому что heroku не подходит для cron), я объявляю инициализатор с именем task_scheduler.rb, который использует планировщик Rufus для запуска задач:
scheduler = Rufus::Scheduler.start_new
scheduler.in '5s' do
autoprocessor_method
end
scheduler.every '1m' do
autoprocessor_method
end
В течение некоторого времени все работает прекрасно.... тогда процесс рейка просто перестаёт подниматься из очереди необъяснимым образом.Очередь становится все больше и больше.Даже если у меня работает несколько рабочих динамов, все они со временем устают и перестают обрабатывать очередь.Я не уверен, что делаю неправильно, но подозреваю, что ссылка на среду Rails в моей задаче rake вызывает повторный запуск кода task_scheduler.rb, что приводит к дублированию расписаний.Мне интересно, как решить эту проблему, если кто-то знает, и мне также любопытно, если это является причиной прекращения работы граблей.
Спасибо