Eventmachine:并发

时间:2011-07-28 22:42:46

标签: ruby concurrency eventmachine

我有一个简单的程序接收连接,进行一些处理并在标准端口上发回响应。由于这是同步完成的,如果一个请求花费的时间太长,则不会处理并发请求。

如果发生任何阻止请求,是否允许同时处理多个请求的方式是否可以推迟?

谢谢,

2 个答案:

答案 0 :(得分:0)

最简单的方法是派出一个新的Thread来处理你的后台任务,然后在做任何与EventMachine相关的事情之前切换回主线程。您可以使用defer方法执行此操作:

def do_something
  EventMachine.defer do
    do_long_process
  end
end

请记住,块所触及的应用程序部分必须是线程安全的,并且您需要确保使用类似next_tick的内容返回主线程以确保所有EventMachine操作发生在正确的线程上。

答案 1 :(得分:0)

这取决于你的请求为什么需要很长时间,如果它是像数据库查询或任何类型的请求到另一个服务器(HTTP,TCP,SMTP,...)的IO绑定,那么EventMachine就是这样。< / p>

如果不是你的情况,你能描述一下为什么你的请求需要花费太多时间吗?