问题描述
|
我正在尝试了解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\',Echo
}
我想知道的是:数据库访问速度往往会变慢,那么我应该如何重写这行GenericModel.create!
的代码,以免减慢反应堆循环?
解决方法
您可以使用非阻塞且基于em的连接适配器(例如em-mysql),或者在另一个线程中执行该任务。
,看看这个SO问题。它基于Rails,但演示应用程序非常清楚地说明了使用Eventmachine命中数据库的好处。