2013-09-10 107 views
1

我的工作人員無法正常工作。Resque作業卡在待處理狀態

我的調度程序顯然不工作。但是,當我手動插入某些東西時,我可以看到它已成功添加,但是它處於未決狀態。

當我手動意思是,我的意思是這樣:

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 

所以我覺得這是工作,不是嗎?

b)在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)指定的隊列在rake任務中是否正確 是的。

+0

可以附加一些代碼,請:) – Viren

+0

的事情是我不知道什麼是張貼有用。 @Viren – content01

+0

幾個事情a)使用'resque_scheduler'如果是的,你是否開始它b)哪個版本的resque c)你是否重新啓動resque workers'rake'任務d)指定的隊列是否在rake任務中指定正確 – Viren

回答

2

好吧,顯然我的舊腳本沒有工作。

我執行:

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

和一切開始工作了:)

非常感謝您的幫助,我知道這是一個新手的問​​題:)

+0

同樣的事情發生在我身上。這是一個很好的提醒。 – dandlezzz

2

對於像我這樣的任何n00bs,第一次在Heroku上設置Resque。確保你在應用程序資源部分添加了一個Resque worker。

enter image description here

+0

好的電話。爲我工作! –