4
我有一個在Heroku上運行的Sinatra應用程序,它使用Dalli來啓用memcached支持。偶爾,memcached服務器無法響應,我得到以下內容:句柄Dalli :: RingError - Sinatra中沒有可用的服務器
Dalli::RingError - No server available
處理這種情況的最佳方法是什麼?
我有一個在Heroku上運行的Sinatra應用程序,它使用Dalli來啓用memcached支持。偶爾,memcached服務器無法響應,我得到以下內容:句柄Dalli :: RingError - Sinatra中沒有可用的服務器
Dalli::RingError - No server available
處理這種情況的最佳方法是什麼?
我選擇通過明確地忽略錯誤來處理這個問題,因爲如果緩存組件關閉,我的應用程序功能就會失敗。你當然可以實現一個日誌語句或任何你想要的,但我選擇了什麼都不做。
我創建了自己的Cache類,並使用它來隔離我的域代碼與Dalli。這裏是相關的部分:
def Cache.get(key)
Configuration.dalliClient.get(key)
rescue Dalli::RingError
nil
end
有趣的..可能是一個好主意,設置某種標誌 - 緩存關閉 - 哪些被測試每次發生某些操作,所以我們可以開始使用緩存一次連接已建立? – minikomi 2011-08-17 04:45:20
你可以設置一個標誌,儘管我選擇不這樣做,因爲它會涉及一個額外的語句來檢查每個Cache使用情況的標誌,而且如果你不是這樣,你還必須找出一種方法來了解memcached是否回來了每次都不會打電話給他。日誌語句或某種通知管理memcached失敗的方式似乎更合適。 – 2011-09-06 01:04:07
可能值得注意的是,在某些情況下,這不是一個好主意。 如果服務器使用大量高速緩存來保持活動狀態,那麼如果您爲服務器的使用付費,則允許服務器活動並完全消失,而不是在緩存服務器關閉時簡單地死亡 – Tim 2012-12-11 04:19:29