pymongoを介したmongohqへのmongodb接続がしばらくアイドル状態になった後(クエリなし)、タイムアウトになるという問題が発生しています。これは問題ありませんが、データベースの接続はDjangoアプリの起動時にのみ作成されます。再接続は正常に行われているようですが、再認証する必要があります。接続が切断されて再接続され、クエリを実行しようとするOperationFailure
と、次の例外値database error: unauthorized for db [shanereustle] lock type: -1
が発生し、再接続しているが認証されていないことを通知します。OperationFailure
からインポートしpymongo.errors
て、次の試行を使用しようとしています...ただし、エラーをキャッチして認証できないようです。
try:
db.mongohq.shanereustle.blog.find()
except OperationFailure:
db.authenticate() #this function reauthenticates the existing connection
しかし、何らかの理由でこれはうまくいきません。このコードの代わりに、クエリの前にdb.authenticate()を実行すると、再認証は正常に行われ、正常に機能しますが、すべてのクエリで再認証する必要はありません。これを行うための適切な方法に関する他の提案は大歓迎です、そして私は助けに感謝します。
ありがとう!