3
我使用以下堆棧:當uwsgi使用Redis的附加價值,而不是它塞汀
- nginx的
- uwsgi
- 的Python(瓶)
我給自己定啓動一個使用redis作爲主要數據庫的小應用程序。我只在代碼中使用GET,SET,EXISTS和EXPIRE。
在終端中嘗試應用程序時,一切正常。在每個請求上,它檢查內容是否可用(EXISTS)。如果不是內容被加載並保存一段時間(SET,EXPIRE)。之後,內容呈現給用戶(GET)。
問題是,只要我通過nginx/uwsgi運行應用程序,一段時間後EXPIRE似乎被忽略。新的內容不再是刪除值並加載新的內容,而是附加到舊的內容 - 因爲它似乎不僅僅是一次,而是像幾十次一樣,導致非常大的值,有時會超時。
對我來說最奇怪的是:一旦我重新啓動uwsgi,整個問題就會消失。
任何想法?
也許你正在經歷某種競爭條件?嘗試使用'SETEX'而不是'SET'和'EXPIRE',並用'MULTI'和'EXEC'將EXISTS和SETEX括起來,這樣它們就會處於同一個事務中。 –
有些代碼證明了這個問題呢? – Marcin
@Marcin:對不起,忘了添加一個鏈接到回購:https://github.com/saibotd/hackerhub/blob/master/app.py – saibotd