Ruby Eventmachine:并发

Ruby Eventmachine:并发,ruby,concurrency,eventmachine,Ruby,Concurrency,Eventmachine,我有一个简单的程序,它接收一个连接,进行一些处理,并在一个标准端口上发送一个响应。由于这是同步完成的,如果一个请求花费的时间太长,则不会处理并发请求 无论发生任何阻塞请求,允许同时处理多个请求的方式是可延迟的吗 谢谢,最简单的方法是拿出一个新线程来处理后台任务,然后在执行任何与EventMachine相关的操作之前切换回主线程。您可以使用defer方法执行此操作: def do_something EventMachine.defer do do_long_process end

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

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


谢谢,

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

def do_something
  EventMachine.defer do
    do_long_process
  end
end

请记住,程序块接触到的应用程序部分必须是线程安全的,您需要确保返回到主线程,并执行类似于“下一步”的操作,以确保所有EventMachine操作都发生在正确的线程上。

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

def do_something
  EventMachine.defer do
    do_long_process
  end
end

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

这取决于您的请求耗时过长的原因,如果它是一些IO绑定的东西,比如DB查询或任何类型的对另一台服务器的请求(HTTP、TCP、SMTP等等),那么EventMachine就是最好的选择


如果不是这样,您能描述一下为什么您的请求花费了太多时间吗?

这取决于您的请求花费太长时间的原因,如果它是IO绑定的,如DB查询或任何类型的对另一台服务器的请求(HTTP、TCP、SMTP等),那么EventMachine就是最好的选择

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