Resque 作业陷入挂起状态

con*_*t01 5 resque redis

我的工人工作不正常。

\n\n

我的调度程序显然不起作用。但是,当我手动将某些内容放入队列时,我可以看到它已成功添加,但它陷入待处理状态。

\n\n

当我说手动时,我的意思是这样的:

\n\n
Resque.enqueue(MyJob,<params>)\n
Run Code Online (Sandbox Code Playgroud)\n\n

那些卡在挂起状态,而其他的,我的 resque_scheduler 上的那个根本没有进入队列。

\n\n

我尝试重新启动工作人员,但它也不起作用。

\n\n

有什么想法可能会发生什么吗?如果您需要更多信息/转储,请告诉我。

\n\n

谢谢。

\n\n
\n\n

a) 正在使用 resque_scheduler 如果您正在启动它:是的,我正在使用它。我刚刚做了一个rake resque:scheduler RAILS_ENV=production

\n\n
2013-09-11 16:38:08 Reloading Schedule\n2013-09-11 16:38:08 Loading Schedule\n2013-09-11 16:38:08 Scheduling c_aggregator_job \n2013-09-11 16:38:08 Scheduling ca_aggregator_job \n2013-09-11 16:38:08 Scheduling l_history_aggregator \n2013-09-11 16:38:08 Scheduling target_aggregator \n2013-09-11 16:38:08 Scheduling view_count_aggregator \n2013-09-11 16:38:08 Scheduling searches_view_aggregator \n2013-09-11 16:38:08 Scheduling b_view_count_aggregator_job \n2013-09-11 16:38:08 Scheduling y_aggregator \n2013-09-11 16:38:08 Schedules Loaded\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我认为它正在发挥作用,对吗?

\n\n

b) 哪个版本的resque

\n\n
gem \'resque\', \'1.23.0\'\ngem \'resque-scheduler\', :require => \'resque_scheduler\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

c) 您是否重新启动了 resque Workers rake 任务\n不,我使用了:

\n\n
sudo service resque-workers start/stop\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是脚本:

\n\n
#! /bin/sh\n### BEGIN INIT INFO\n# Provides:          resque-server\n# Required-Start:    $network $named $remote_fs $syslog\n# Required-Stop:     $network $named $remote_fs $syslog\n# Default-Start:     2 3 4 5                                                                                                                               \n# Default-Stop:      0 1 6                                                                                                                                 \n### END INIT INFO                 \n\nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\nDAEMON=`which rake`\nDAEMON_ARGS=\'resque:work\'\nDESC="Resque workers script"\nPWD=/webapps/noomii/offline/\ntest -x $DAEMON || exit 0\n\n. /lib/lsb/init-functions\n\nif [ ! -d /var/run/resque ]; then\n        mkdir -p /var/run/resque\nfi\n\nstart_resque() {\n        start-stop-daemon --start  --quiet --chdir $PWD --chuid capistrano:capistrano --make-pidfile --background --pidfile /var/run/resque/rake.pid \\\n                --exec  $DAEMON $DAEMON_ARGS RAILS_ENV=production QUEUE=high,medium,low \n}\n\nstop_resque() {\n    start-stop-daemon --stop --oknodo  --pidfile /var/run/resque/rake.pid\n}\n\nstatus_resque() {\n        status_of_proc -p "/var/run/resque/rake.pid" \n}\n\ncase "$1" in\n    start)\n  log_begin_msg "Starting $DESC"\n  start_resque\n  log_end_msg $?\n  ;;\n    stop)\n  log_begin_msg "Stopping $DESC"\n  stop_resque\n  log_end_msg $?\n  ;;\n    status)\n      status_resque\n        ;;\n    restart|force-reload)\n  log_begin_msg "Restarting $DESC"\n  stop_resque\n  sleep 1\n  start_resque\n  log_end_msg $?\n  ;;\n    *)\n  echo "Usage: $0 {start|stop|status|restart}" >&2\n  exit 1\n  ;;\nesac\n
Run Code Online (Sandbox Code Playgroud)\n\n

d) 是在 rake 任务中正确指定的队列\n是的,是的。

\n

con*_*t01 3

好吧,显然我的旧脚本不起作用。

我执行了:

rake resque:scheduler RAILS_ENV=production
QUEUE=high,aggregators bundle exec rake resque:work RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)

一切又开始工作了:)

非常感谢您的帮助,我知道这是一个新手问题:)