2011-07-28 35 views
2

我有一個簡單的程序,它接收一個連接,做一些處理並在標準端口上發回一個響應。由於這是同步完成的,如果一個請求花費太長時間,則不處理併發請求。Eventmachine:併發性

可延遲是否允許多個請求同時處理,而不管發生任何阻塞請求?

感謝,

回答

0

最簡單的方法是到餐桌一個新的線程來處理您的後臺任務,那麼做任何事情EventMachine的相關之前切換回主線程。你可以用defer方法做到這一點:

def do_something 
    EventMachine.defer do 
    do_long_process 
    end 
end 

記住你的塊感動的應用程序的部分將必須是線程安全的,你將需要確保返回到主線程與例如next_tick,以確保所有EventMachine操作都發生在正確的線程上。

0

這取決於爲什麼你的請求花費很長時間,如果它是IO綁定類似數據庫查詢或任何類型的請求到另一個服務器(HTTP,TCP,SMTP,...),那麼EventMachine就是要走的路。

如果這不是你的情況,你能描述爲什麼你的請求需要花費太多時間嗎?