2011-08-31 67 views
0

在rails應用程序中的請求過程中,我想將數據發佈到另一臺服務器,並且無需等待外部帖子解析即可完成原始請求。我有以下代碼正確發佈,但在繼續之前仍然等待帖子完成。我試過在callback之外移動EventMachine.stop,但這只是通過呼叫errback來結束所有事情。我該怎麼辦?如何使用eventmachine異步處理ruby post請求

EventMachine.run { 
    http = EventMachine::HttpRequest.new(url).post :body => {body} 
    http.errback { p 'Uh oh'; EM.stop } 
    http.callback { 
     p http.response 
     EventMachine.stop 
    } 
    } 

編輯:我沒有嫁給eventmachine這個。如果有更好的解決方案,我全是耳朵。

回答

0

有一個簡單的解決方案,就是創建一個新線程並讓其完成工作,一個庫可能(或不)幫助你正確地做到這一點是https://github.com/tra/spawn。 我從來沒有使用過它,但我認爲它可能適合您的需求。

我喜歡Eventmachine,並將其用於大多數項目(工作或個人),但它需要更多的工作才能使它適用於rails,並且您仍需要非常小心使用哪些庫以及如何不阻止反應堆。

請注意,如果要做任何阻塞操作,您還需要小心,但是今天大多數庫都建立在不阻止解釋器的情況下(至少在1.9內)