2

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

无论是否发生任何阻塞请求,都可以推迟允许同时处理多个请求的方式吗?

谢谢,

4

2 回答 2

0

这取决于为什么您的请求需要很长时间,如果它是像数据库查询这样的 IO 绑定或对另一台服务器(HTTP、TCP、SMTP 等)的任何类型的请求,那么 EventMachine 就是要走的路。

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

于 2011-08-08T19:52:24.407 回答
0

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

def do_something
  EventMachine.defer do
    do_long_process
  end
end

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

于 2011-07-28T23:05:18.663 回答