1

我正在尝试了解 Eventmachine。

我有一个服务器:

module EchoServer
  def post_init
    puts "connected"
  end

  def receive_data(data)
   puts "Receiving data: #{data}"

   GenericModel.create!(:text => data)
  end

  def unbind
    puts "disconnected"
  end
end

EM.run do
  EM.start_server '127.0.0.1', 1234, EchoServer
end

还有一个客户:

class Echo < EventMachine::Connection
  def post_init
    send_data 'Hello'
  end

  def receive_data(data)
    p data
    close_connection
  end

  def connection_completed
    puts "connection completed"
  end

  def unbind
    EventMachine.stop
  end
end

EventMachine.run {
  EventMachine.connect '127.0.0.1', 1234, Echo
}

这就是我想知道的:数据库访问往往比较慢,那么我应该如何重写那GenericModel.create!行代码以避免减慢我的反应器循环?

4

2 回答 2

1

您要么使用非阻塞且基于 em 的连接适配器(如 em-mysql),要么在另一个线程中执行该任务。

于 2011-05-26T07:50:50.443 回答
0

看看这个 SO question。它基于 Rails,但演示应用程序非常清楚地解释了使用 Eventmachine 访问数据库的好处。

于 2011-05-26T05:12:03.543 回答