我有一个简单的程序接收连接,进行一些处理并在标准端口上发回响应。由于这是同步完成的,如果一个请求花费的时间太长,则不会处理并发请求。
如果发生任何阻止请求,是否允许同时处理多个请求的方式是否可以推迟?
谢谢,
答案 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>
如果不是你的情况,你能描述一下为什么你的请求需要花费太多时间吗?