【发布时间】:2012-02-19 20:01:02
【问题描述】:
我最近在升级到 rails 3 时从 mongrel 切换到 Thin。在切换之前,我们一直在使用 EventMachine 没有任何问题。切换到瘦后,每当调用 EventMachine 时,服务器都会轰炸并说我们返回的变量是 nil。
据我了解,thin 使用 EventMachine,这可能会导致与 Mongrel 使用的实现发生冲突。我使用 EventMachine 的次数不多,但似乎我需要在另一个实例中运行 EventMachine 以将其与 Thin 使用的 EventMachine 分开。我在正确的轨道上吗?我将如何在与 Thin 的 EventMachine 分开的自己的进程中立即运行它?
这是我们目前已经实现的 EventMachine 的 sn-p
def connect
EventMachine.run {
args, options = {
:query => @options[:query],
:head => @options[:headers]
}, {
:connect_timeout => @options[:timeout],
:inactivity_timeout => @options[:timeout]
}
args[:body] = @options[:data] if allow_body?
args[:redirects] = @options[:redirects] if @options[:redirects]
http = EventMachine::HttpRequest.new(@uri, options).send(@options[:method], args)
http.errback {
@response = HttpConnection::Response.new(http, false, @options[:logger])
EventMachine.stop
}
http.callback {
@response = HttpConnection::Response.new(http, true, @options[:logger])
EventMachine.stop
}
}
return @response
end
【问题讨论】:
标签: ruby-on-rails mongrel eventmachine thin