次のスタックを使用しています。
- nginx
- uwsgi
- Python (フラスコ)
メイン データベースとして redis を利用する小さなアプリをセットアップしました。コードでは GET、SET、EXISTS、および EXPIRE のみを使用します。
端末でアプリを試すと、すべて正常に動作します。要求ごとに、コンテンツが利用可能 (EXISTS) かどうかをチェックします。そうでない場合は、コンテンツがロードされ、しばらくの間保存されます (SET、EXPIRE)。その後、コンテンツがユーザーに提示されます (GET)。
問題は、nginx/uwsgi 経由でアプリを実行するとすぐに、しばらくすると EXPIRE が無視されるように見えることです。値を削除して新たにロードする代わりに、新しいコンテンツが古いコンテンツに追加されます。これは、1 回だけでなく、数十回のように見えるため、値が非常に大きくなり、タイムアウトになることもあります。
私にとって最も奇妙なこと:uwsgiを再起動するとすぐに問題全体が消えます。
何か案が?