【发布时间】:2012-12-08 14:13:16
【问题描述】:
我的一个 Sinatra 操作使用 net/http 执行另一个请求并根据响应计算一些内容:
api_response = Net::HTTP.get_response(uri)
它的作用就像一个魅力,但是当我尝试对此进行分析时:
configure do
use ::Rack::PerftoolsProfiler, default_printer: 'pdf', frequency: 4000, mode: :walltime
end
(并将?profile=true 放入请求的参数中,我得到了这个:
Errno::EADDRINUSE - Address already in use - connect(2):
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `open'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:762:in `connect'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:744:in `start'
/Users/tomek/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/net/http.rb:454:in `get_response'
知道发生了什么吗?
【问题讨论】:
-
我从错误“地址已在使用”中猜测,其他东西正在使用您尝试运行探查器的端口。确保你没有在同一个端口上运行其他东西。
-
是否可以在特定端口上设置分析器?
-
尝试用
set :port, 9494更改Sinatra的端口。 -
不,这不起作用:(
标签: ruby http profiling sinatra rack