Задачи Resque, застрявшие в состоянии ожидания

Мои работники работают неправильно.

Мой планировщик, похоже, не работает. Однако, когда я вручную запускаю очередь, я вижу, что она успешно добавлена, однако она застревает в ожидающем состоянии.

Когда я имею в виду, я имею в виду что-то вроде этого:

Resque.enqueue(MyJob,<params>)
</params>

Они застревают в ожидающем состоянии, а другие - в моем resque_scheduler, которые не находятся в очереди.

Я попытался перезапустить рабочих, и он тоже не работает.

Любые идеи, что может произойти? Если вам нужна дополнительная информация/дампы, дайте мне знать.

Благодарю.

a) используют resque_scheduler, если да, вы начинаете его: Да, я использую его. И я просто сделал rake resque:scheduler RAILS_ENV=production

2013-09-11 16:38:08 Reloading Schedule
2013-09-11 16:38:08 Loading Schedule
2013-09-11 16:38:08 Scheduling c_aggregator_job 
2013-09-11 16:38:08 Scheduling ca_aggregator_job 
2013-09-11 16:38:08 Scheduling l_history_aggregator 
2013-09-11 16:38:08 Scheduling target_aggregator 
2013-09-11 16:38:08 Scheduling view_count_aggregator 
2013-09-11 16:38:08 Scheduling searches_view_aggregator 
2013-09-11 16:38:08 Scheduling b_view_count_aggregator_job 
2013-09-11 16:38:08 Scheduling y_aggregator 
2013-09-11 16:38:08 Schedules Loaded

Поэтому я думаю, что это работает, правильно?

б) какая версия resque

gem 'resque', '1.23.0'
gem 'resque-scheduler', :require => 'resque_scheduler'

c) Вы повторно начали работу с красными рабочими рейками Нет, я использовал:

sudo service resque-workers start/stop

Здесь сценарий:

#! /bin/sh
### BEGIN INIT INFO
# Provides: resque-server
# Required-Start: $network $named $remote_fs $syslog
# Required-Stop: $network $named $remote_fs $syslog
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
### END INIT INFO 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON='which rake'
DAEMON_ARGS='resque:work'
DESC="Resque workers script"
PWD=/webapps/noomii/offline/
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

if [ ! -d /var/run/resque ]; then
 mkdir -p /var/run/resque
fi

start_resque() {
 start-stop-daemon --start --quiet --chdir $PWD --***** capistrano:capistrano --make-pidfile --background --pidfile /var/run/resque/rake.pid \
 --exec $DAEMON $DAEMON_ARGS RAILS_ENV=production QUEUE=high,medium,low 
}

stop_resque() {
 start-stop-daemon --stop --oknodo --pidfile /var/run/resque/rake.pid
}

status_resque() {
 status_of_proc -p "/var/run/resque/rake.pid" 
}

case "$1" in
 start)
 log_begin_msg "Starting $DESC"
 start_resque
 log_end_msg $?
 ;;
 stop)
 log_begin_msg "Stopping $DESC"
 stop_resque
 log_end_msg $?
 ;;
 status)
 status_resque
 ;;
 restart|force-reload)
 log_begin_msg "Restarting $DESC"
 stop_resque
 sleep 1
 start_resque
 log_end_msg $?
 ;;
 *)
 echo "Usage: $0 {start|stop|status|restart}" >&2
 exit 1
 ;;
esac

d) задана правильная очередь в задаче rake. Да, это так.

2 ответа

Для любых n00bs, таких как я, создание Resque на Heroku в первый раз. Убедитесь, что вы добавили сотрудника Resque в раздел "Ресурсы приложений".


Хорошо, поэтому, видимо, мои старые сценарии не работали.

Я выполнил:

rake resque:scheduler RAILS_ENV=production
QUEUE=high,aggregators bundle exec rake resque:work RAILS_ENV=production

и все снова начали работать :)

Большое вам спасибо за помощь, и я знаю, что это была проблема новичков :)

licensed under cc by-sa 3.0 with attribution.