Написание правильного кода Eventmachine для Ruby? - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь понять 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!, чтобы избежать замедления цикла реактора?

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Либо вы используете адаптер подключения, который не является блокирующим и основанным на em (например, em-mysql), либо выполняете эту задачу в другом потоке.

0 голосов
/ 26 мая 2011

Посмотрите на этот вопрос .Он основан на Rails, но демонстрационное приложение очень ясно объясняет преимущества использования базы данных с помощью Eventmachine.

...