Мои работники работают неправильно.Рекреационные вакансии, застрявшие в состоянии ожидания
Мой планировщик, по-видимому, не работает. Однако, когда я вручную запускаю очередь, я вижу, что она успешно добавлена, однако она застревает в ожидающем состоянии.
Когда я имею в виду вручную, я имею в виду что-то вроде этого:
Resque.enqueue(MyJob,<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'
с) вы повторно начали Resque рабочие грабли задача Нет, я использовал:
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 --chuid 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) указанная очередь задана в граблированной задаче Да, это так.
Вы можете прикрепить какой-то код, пожалуйста :) – Viren
Дело в том, что я не знаю, что было бы полезно, чтобы оставлять сообщения. @Viren – content01
Пара вещей a) использует 'resque_scheduler', если да, вы начинаете его b) какая версия resque c) вы перезапустили задачу resque workers' rake' d) - это очередь, указанная правильно в задаче грабли – Viren