我正在尝试了解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!
代码行以避免减慢我的反应器循环?
答案 0 :(得分:1)
要么使用非阻塞且基于em的连接适配器(如em-mysql),要么在另一个线程中执行该任务。
答案 1 :(得分:0)
看看this SO question。它是基于Rails的,但是演示应用程序非常清楚地解释了使用Eventmachine命中数据库的好处。