2011-03-23 80 views
2

我有一個rake任務作爲守護進程運行,爲新劇集擦除了數千個podcast rss feed。如果它發現新的情節,它將它寫入數據庫。如果它發現對舊集的更改,則會將更改寫入數據庫。這個守護進程不斷運行。守護進程和查看兩個同時訪問SQLite數據庫

現在我們假設用戶轉到特定播客的頁面。在我看來,我有一個ajax輪詢(彗星)過程,可以使用delayed_job爲給定的播客獲取新劇集。

現在我一次只能運行其中的一個。我可以運行守護進程或讓用戶觸發delayed_job進程。我是Rails的新手,不太瞭解如何啓用我需要的併發。我沒有在這裏發佈任何代碼,因爲我的問題在這一點上是真正的概念。如何設計一個應用程序來處理這種併發性?

我的印象是切換到MySQL可能會減輕這些問題中的一些,但是,我覺得我錯過了這個難題的關鍵部分。任何幫助將不勝感激。謝謝。

回答

2

你錯過的一塊是這個。 SQLite是一個基於文件的數據庫,這意味着當一個進程訪問它時,它會鎖定該文件。這就是爲什麼你一次只能做一件事,不管這是你的守護進程更新數據還是訪問它的視圖。

解決方案是移動到一個合適的數據庫,如MySQL建議。你已經遠遠超出了SQLite的功能,它並不意味着你使用它的方式。

+0

謝謝Srdjan Pejic。我希望這是答案。我想是時候把訓練輪卸下來了。 – lightyrs 2011-03-23 20:30:26