[英]Many producer, single consumer with python/mod_wsgi
我有一個由Apache服務的Pylons Web應用程序(mod_wsgi,prefork)。 由於使用Apache,因此有多個單獨的進程同時運行我的應用程序代碼。 我希望應用程序在后台執行一些非關鍵任務,以縮短“實時”響應時間。 因此,我想到了任務隊列,許多Apache進程將任務添加到此隊列中,一個單獨的Python進程一個接一個地處理它們並從隊列中刪除。
最好將隊列保留在磁盤上,這樣不會因斷電,服務器重啟等原因而丟失未排隊的任務。問題是實現這種隊列的合理方法是什么 ?
至於我嘗試過的事情:我從簡單的SQLite數據庫和其中的單個表開始存儲隊列項目。 在負載測試中,當並發級別提高時,我開始按預期收到“數據庫鎖定”錯誤。 快速的“骯臟”解決方案是將MySQL替換為SQLite,它可以很好地處理並發問題,但是對於我需要做的簡單事情來說,這似乎有點過頭了。 與隊列相關的數據庫操作也顯示在我的性能分析報告中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.