خطأ وقت تشغيل RESQUE في /العمال: عدد خاطئ من الحجج الخاصة بـ "موجود" أمر

StackOverflow https://stackoverflow.com/questions/2905358

  •  04-10-2019
  •  | 
  •  

سؤال

أواجه وقت تشغيل في وقت التشغيل عندما أنظر إلى علامة التبويب "العمال" على Resque-Web (LocalHost). كل شيء آخر يعمل.

تحرير: عندما يحدث هذا الخطأ ، لدي أيضًا (3 أو 4) عمال غير معروفين لا يعملون. أعتقد أنهم مسؤولون عن الخطأ ولكني لا أفهم كيف وصلوا إلى هنا. يحدث ذلك فقط عندما أبدأ العمال من الله

هل يمكنك مساعدتي على ذلك ؟ هل فعلت شيئا خطأ ؟

التكوين: Resque 1.8.5 كجوهرة في قضبان 2.3.8 على تطبيق Snow Leopard Redis 1.0.7 / Rack 1.1 / Sinatra 1.0 / Vegas 0.1.7

  • ملف: client.rb
  • الموقع: format_error_reply
  • الخط: 558

Backtrace:

* /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
هل كانت مفيدة؟

المحلول

لقد وجدت المشكلة:

في ملف تكوين الله ، كان لدي (مع مسافات بعد الفاصلة في قائمة الانتظار):

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}

الآن يعمل !!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top