簡體   English   中英

如何將ActiveRecord與EventMachine異步使用?

[英]How do I use ActiveRecord asynchronously with EventMachine?

我在Rails上使用ruby創建了一個網站。 現在,我需要用Flash / Action腳本編寫一個聊天/游戲,然后我決定游戲服務器將是紅寶石(主要是因為我已經有了我的AR模型,這是我所知道的語言,並且因為聊天/游戲通常是受IO限制的,它的計算量並不大)。 一開始我以為我會使用多線程應用程序(與jruby一起運行),每個客戶端都有一個線程。 然后我意識到這將是一個壞主意。 然后,我考慮使用select / kqueue / epoll。 我對是否存在諸如twisted(用於python)但未包含ruby的庫進行了研究,結果發現存在EventMachine(其功能大致相同)。 我很難全神貫注於事件/回調的處理方式,但我想我會好的。 但是,有一件事:我意識到使用ActiveRecord意味着我的數據庫查詢將被阻止,這是一件壞事。 我在網上查找“異步ActiveRecord”,發現了一些有趣的東西(異步,neverblock,em_postgresql等),但我仍然不知道如何應用它們。 如果我理解正確,異步基本上就是帶有纖維的EM,這將使我能夠編寫看起來像普通代碼的事件代碼(有人可以向我解釋嗎?)。 我相信Em_postgresql是(我認為)使用纖維與異步一起工作的postgresql驅動程序。 那是對的嗎?

我很迷茫,我想請一個人給我一個基本的EM服務器的例子,該服務器對Postgresql數據庫進行非阻塞的ActiveRecord調用(主要是因為這是我要使用的)。

另外,還有一件事我不理解。 EventMachine主要是單線程的,但使用線程進行延遲。 默認的ruby解釋器只有綠色線程。 EventMachine如何使用系統線程? 是因為它主要是C ++嗎?

謝謝你的幫助。

ActiveRecord應該能夠在多線程環境中工作。 它取決於數據庫驅動程序以支持並行執行(即mysql2驅動程序)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM