2013-09-10 77 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

好的电话。为我工作! –