2010-05-25 62 views
1

當我在resque-web(本地主機)上查看「工人」選項卡時遇到運行時錯誤。其他一切正常。在/工人Resque運行時錯誤:'存在'命令的參數錯誤

編輯:當這個錯誤發生時,我也有一些(3或4)未知的工人'不工作'。我認爲他們對錯誤負責,但我不明白他們是如何到達這裏的。它只發生在我開始從上帝的工人

你能幫助我嗎?我做錯什麼了嗎 ?

配置: Resque 1.8.5作爲寶石在一導軌2.3.8應用雪豹 redis的1.0.7 /機架1.1/1.0屈/拉斯維加斯0.1.7

  • 文件:客戶端。 RB
  • 位置:format_error_reply
  • 線:558

回溯:

* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in format_error_reply 
* 
    551. when DOLLAR then format_bulk_reply(line) 
    552. when ASTERISK then format_multi_bulk_reply(line) 
    553. else raise ProtocolError.new(reply_type) 
    554. end 
    555. end 
    556. 
    557. def format_error_reply(line) 
    558. raise "-" + line.strip 
    559. end 
    560. 
    561. def format_status_reply(line) 
    562. line.strip 
    563. end 
    564. 
    565. def format_integer_reply(line) 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in format_reply 
* 
    541. 
    542. def reconnect 
    543. disconnect && connect_to_server 
    544. end 
    545. 
    546. def format_reply(reply_type, line) 
    547. case reply_type 
    548. when MINUS then format_error_reply(line) 
    549. when PLUS then format_status_reply(line) 
    550. when COLON then format_integer_reply(line) 
    551. when DOLLAR then format_bulk_reply(line) 
    552. when ASTERISK then format_multi_bulk_reply(line) 
    553. else raise ProtocolError.new(reply_type) 
    554. end 
    555. end 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in read_reply 
* 
    478. disconnect 
    479. 
    480. raise Errno::EAGAIN, "Timeout reading from the socket" 
    481. end 
    482. 
    483. raise Errno::ECONNRESET, "Connection lost" unless reply_type 
    484. 
    485. format_reply(reply_type, @sock.gets) 
    486. end 
    487. 
    488. 
    489. if "".respond_to?(:bytesize) 
    490. def get_size(string) 
    491. string.bytesize 
    492. end 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in process_command 
* 
    448. return pipeline ? results : results[0] 
    449. end 
    450. 
    451. def process_command(command, argvv) 
    452. @sock.write(command) 
    453. argvv.map do |argv| 
    454. processor = REPLY_PROCESSOR[argv[0].to_s] 
    455. processor ? processor.call(read_reply) : read_reply 
    456. end 
    457. end 
    458. 
    459. def maybe_lock(&block) 
    460. if @thread_safe 
    461. @mutex.synchronize(&block) 
    462. else 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in map 
* 
    446. end 
    447. 
    448. return pipeline ? results : results[0] 
    449. end 
    450. 
    451. def process_command(command, argvv) 
    452. @sock.write(command) 
    453. argvv.map do |argv| 
    454. processor = REPLY_PROCESSOR[argv[0].to_s] 
    455. processor ? processor.call(read_reply) : read_reply 
    456. end 
    457. end 
    458. 
    459. def maybe_lock(&block) 
    460. if @thread_safe 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in process_command 
* 
    446. end 
    447. 
    448. return pipeline ? results : results[0] 
    449. end 
    450. 
    451. def process_command(command, argvv) 
    452. @sock.write(command) 
    453. argvv.map do |argv| 
    454. processor = REPLY_PROCESSOR[argv[0].to_s] 
    455. processor ? processor.call(read_reply) : read_reply 
    456. end 
    457. end 
    458. 
    459. def maybe_lock(&block) 
    460. if @thread_safe 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in raw_call_command 
* 
    435. @sock.write(command) 
    436. return true 
    437. end 
    438. # The normal command execution is reading and processing the reply. 
    439. results = maybe_lock do 
    440. begin 
    441. set_socket_timeout!(0) if requires_timeout_reset?(argvv[0][0].to_s) 
    442. process_command(command, argvv) 
    443. ensure 
    444. set_socket_timeout!(@timeout) if requires_timeout_reset?(argvv[0][0].to_s) 
    445. end 
    446. end 
    447. 
    448. return pipeline ? results : results[0] 
    449. end 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in synchronize 
* 
    454. processor = REPLY_PROCESSOR[argv[0].to_s] 
    455. processor ? processor.call(read_reply) : read_reply 
    456. end 
    457. end 
    458. 
    459. def maybe_lock(&block) 
    460. if @thread_safe 
    461. @mutex.synchronize(&block) 
    462. else 
    463. block.call 
    464. end 
    465. end 
    466. 
    467. def read_reply 
    468. 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in maybe_lock 
* 
    454. processor = REPLY_PROCESSOR[argv[0].to_s] 
    455. processor ? processor.call(read_reply) : read_reply 
    456. end 
    457. end 
    458. 
    459. def maybe_lock(&block) 
    460. if @thread_safe 
    461. @mutex.synchronize(&block) 
    462. else 
    463. block.call 
    464. end 
    465. end 
    466. 
    467. def read_reply 
    468. 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in raw_call_command 
* 
    432. end 
    433. # When in Pub/Sub mode we don't read replies synchronously. 
    434. if @pubsub 
    435. @sock.write(command) 
    436. return true 
    437. end 
    438. # The normal command execution is reading and processing the reply. 
    439. results = maybe_lock do 
    440. begin 
    441. set_socket_timeout!(0) if requires_timeout_reset?(argvv[0][0].to_s) 
    442. process_command(command, argvv) 
    443. ensure 
    444. set_socket_timeout!(@timeout) if requires_timeout_reset?(argvv[0][0].to_s) 
    445. end 
    446. end 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in call_command 
* 
    336. # try to reconnect just one time, otherwise let the error araise. 
    337. def call_command(argv) 
    338. log(argv.inspect, :debug) 
    339. 
    340. connect_to_server unless connected? 
    341. 
    342. begin 
    343. raw_call_command(argv.dup) 
    344. rescue Errno::ECONNRESET, Errno::EPIPE, Errno::ECONNABORTED 
    345. if reconnect 
    346. raw_call_command(argv.dup) 
    347. else 
    348. raise Errno::ECONNRESET 
    349. end 
    350. end 
* /Library/Ruby/Gems/1.8/gems/redis-1.0.7/lib/redis/client.rb in method_missing 
* 
    385. connect_to(@host, @port) 
    386. call_command([:auth, @password]) if @password 
    387. call_command([:select, @db]) if @db != 0 
    388. @sock 
    389. end 
    390. 
    391. def method_missing(*argv) 
    392. call_command(argv) 
    393. end 
    394. 
    395. def raw_call_command(argvp) 
    396. if argvp[0].is_a?(Array) 
    397. argvv = argvp 
    398. pipeline = true 
    399. else 
* /Library/Ruby/Gems/1.8/gems/redis-namespace-0.4.4/lib/redis/namespace.rb in send 
* 
    159. args = add_namespace(args) 
    160. args.push(last) if last 
    161. when :alternate 
    162. args = [ add_namespace(Hash[*args]) ] 
    163. end 
    164. 
    165. # Dispatch the command to Redis and store the result. 
    166. result = @redis.send(command, *args, &block) 
    167. 
    168. # Remove the namespace from results that are keys. 
    169. result = rem_namespace(result) if after == :all 
    170. 
    171. result 
    172. end 
    173. 
* /Library/Ruby/Gems/1.8/gems/redis-namespace-0.4.4/lib/redis/namespace.rb in method_missing 
* 
    159. args = add_namespace(args) 
    160. args.push(last) if last 
    161. when :alternate 
    162. args = [ add_namespace(Hash[*args]) ] 
    163. end 
    164. 
    165. # Dispatch the command to Redis and store the result. 
    166. result = @redis.send(command, *args, &block) 
    167. 
    168. # Remove the namespace from results that are keys. 
    169. result = rem_namespace(result) if after == :all 
    170. 
    171. result 
    172. end 
    173. 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/worker.rb in state 
* 
    416. def idle? 
    417. state == :idle 
    418. end 
    419. 
    420. # Returns a symbol representing the current worker state, 
    421. # which can be either :working or :idle 
    422. def state 
    423. redis.exists("worker:#{self}") ? :working : :idle 
    424. end 
    425. 
    426. # Is this worker the same as another worker? 
    427. def ==(other) 
    428. to_s == other.to_s 
    429. end 
    430. 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/server/views/workers.erb in __tilt_a2112543c5200dbe0635da5124b47311 
* 
    46. <tr> 
    47. <th>&nbsp;</th> 
    48. <th>Where</th> 
    49. <th>Queues</th> 
    50. <th>Processing</th> 
    51. </tr> 
    52. <% for worker in (workers = resque.workers.sort_by { |w| w.to_s }) %> 
    53. <tr class="<%=state = worker.state%>"> 
    54. <td class='icon'><img src="<%=u state %>.png" alt="<%= state %>" title="<%= state %>"></td> 
    55. 
    56. <% host, pid, queues = worker.to_s.split(':') %> 
    57. <td class='where'><a href="<%=u "workers/#{worker}"%>"><%= host %>:<%= pid %></a></td> 
    58. <td class='queues'><%= queues.split(',').map { |q| '<a class="queue-tag" href="' + u("/queues/#{q}") + '">' + q + '</a>'}.join('') %></td> 
    59. 
    60. <td class='process'> 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/server/views/workers.erb in each 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/server/views/workers.erb in __tilt_a2112543c5200dbe0635da5124b47311 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/tilt.rb in send 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/tilt.rb in evaluate 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/tilt.rb in render 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in render 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in erb 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/server.rb in show 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/lib/resque/server.rb in GET /workers 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in instance_eval 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route_eval 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in catch 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in each 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in route! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in dispatch! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in instance_eval 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in invoke 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in catch 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in invoke 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call! 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call 
* /Volumes/Donnees/Users/**/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/showexceptions.rb in call 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in synchronize 
* /Library/Ruby/Gems/1.8/gems/sinatra-1.0/lib/sinatra/base.rb in call 
* /Volumes/Donnees/Users/**/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb in call 
* /Volumes/Donnees/Users/**/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/chunked.rb in call 
* /Volumes/Donnees/Users/**/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/mongrel.rb in process 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in process_client 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in each 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in process_client 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in run 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in initialize 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in new 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in run 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in initialize 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in new 
* /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb in run 
* /Volumes/Donnees/Users/**/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/mongrel.rb in run 
* /Library/Ruby/Gems/1.8/gems/vegas-0.1.7/lib/vegas/runner.rb in run! 
* /Library/Ruby/Gems/1.8/gems/vegas-0.1.7/lib/vegas/runner.rb in start 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/bin/resque-web in new 
* /Library/Ruby/Gems/1.8/gems/resque-1.8.5/bin/resque-web in nil 
* /usr/bin/resque-web in load 
+0

它會引發同樣的錯誤,當我做'resque list' – Superflux 2010-05-25 14:32:25

回答

1

我發現這個問題:

在上帝的配置文件,我有(用空格隊列中的逗號後):

num_workers.times do |num| 
    God.watch do |w| 
    w.name = "resque-#{num}" 
    w.group = 'resque' 
    w.interval = 30.seconds 
    w.env = {"QUEUE"=>"critical, high, low", "RAILS_ENV"=>rails_env} 

,而不是(不含逗號後的空格):

num_workers.times do |num| 
    God.watch do |w| 
    w.name = "resque-#{num}" 
    w.group = 'resque' 
    w.interval = 30.seconds 
    w.env = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env} 

現在它的工作!

相關問題