2013-09-10 6 views
1

직원이 올바르게 작동하지 않습니다.Resque 작업이 보류 중 상태로 고정되었습니다.

내 스케줄러가 분명히 작동하지 않습니다. 그러나 수동으로 대기열에 넣을 때 성공적으로 추가 된 것을 볼 수 있지만 보류 상태에 머물러 있습니다. 내가 수동으로 의미 때

나는 이런 식으로 뭔가 의미 :

Resque.enqueue(MyJob,<params>) 

그 상태와 다른 사람 보류에 박히을 내 resque_scheduler에 하나 EN-큐 전혀되지 않습니다.

작업자를 다시 시작하려고 시도했지만 작동하지 않습니다.

어떤 아이디어가 있을지 모릅니다. 더 많은 정보/덤프가 필요하면 알려주세요.

감사합니다.


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 

나는 그것이 올바르게 작동하고있다라고 생각한다?

B) resque의 버전

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

C) 당신이 다시 시작 resque 노동자들은 작업 아니, 내가 사용 레이크 :

#! /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 
: 여기
sudo service resque-workers start/stop 

스크립트입니다

d)는 레이크 작업에서 올바르게 지정된 대기열입니다. 예, 그렇습니다.

+0

당신은 몇 가지 코드는 것은 내가 게시하는 것이 유용 할 것입니다 무슨 몰라 – Viren

+0

을 :)하시기 바랍니다 첨부 할 수 있습니다. @Viren – content01

+0

몇가지 a) 네가 시작한다면'resque_scheduler'를 사용하고있다. b) 어떤 버전의 resque c) resque worker'rake'를 재 시작 했는가? d) 레이크 작업에서 정확하게 지정된 대기열이다. – Viren

답변

2

그래, 내 옛날 스크립트가 작동하지 않아서.

내가 실행 :

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

모두가 다시 작동 :

는 당신에게 당신이 도움 나는이 안돼서 문제 :

+0

똑같은 일이 저에게 일어났습니다. 그것은 좋은 알림입니다. – dandlezzz

2

에 대한 것을 알고 있어요 주셔서 대단히 감사 시작 거기서 처음으로 Heroku에 Resque를 설정, 나 같은 어떤 n00bs. 앱 리소스 섹션에 Resque 작업자를 추가해야합니다.

enter image description here

+0

전화하세요. 나를 위해 일했다! –