我有一個簡單的程序,它接收一個連接,做一些處理並在標準端口上發回一個響應。由於這是同步完成的,如果一個請求花費太長時間,則不處理併發請求。Eventmachine:併發性
可延遲是否允許多個請求同時處理,而不管發生任何阻塞請求?
感謝,
我有一個簡單的程序,它接收一個連接,做一些處理並在標準端口上發回一個響應。由於這是同步完成的,如果一個請求花費太長時間,則不處理併發請求。Eventmachine:併發性
可延遲是否允許多個請求同時處理,而不管發生任何阻塞請求?
感謝,
最簡單的方法是到餐桌一個新的線程來處理您的後臺任務,那麼做任何事情EventMachine的相關之前切換回主線程。你可以用defer
方法做到這一點:
def do_something
EventMachine.defer do
do_long_process
end
end
記住你的塊感動的應用程序的部分將必須是線程安全的,你將需要確保返回到主線程與例如next_tick
,以確保所有EventMachine操作都發生在正確的線程上。
這取決於爲什麼你的請求花費很長時間,如果它是IO綁定類似數據庫查詢或任何類型的請求到另一個服務器(HTTP,TCP,SMTP,...),那麼EventMachine就是要走的路。
如果這不是你的情況,你能描述爲什麼你的請求需要花費太多時間嗎?