あちこちでさまざまなことと格闘した後、ようやく、BottlePYを Apache で実行し、MongoDB を利用したサイトを実行することができました。私はDjangoアプリの実行に慣れているので、質問で少し関連します。
問題
ページが BottlePY 経由で読み込まれるたびに、MongoHQ.com にある MongoDB データベースへの接続を再認証する必要があります (つまり、おそらく再接続する必要がありました)。
私が見つけたもの
各モデル関数の先頭にdb.keep_alive()
関数を追加して、mongodb クエリを実行する前に単純なクエリを実行しようとしました。失敗した場合は、OperationFailure または AutoReconnect エラーをキャッチし、関数を呼び出しdb.authenticate()
ます。再認証後、logs db にログを追加して、再認証が必要な頻度を監視します。現在、ページが読み込まれるたびに再認証する必要があります (クエリの実行が必要です)。これは正しくありません。
ジャンゴとの違い
私はこれと同じ概念をdjangoで使用しており、クエリが実行されていない10〜15分後にのみdb接続を認証する必要があることがわかりました。
同じドライバー、関数、メソッドを使用しているため、django で pymongo 接続を作成することと、ボトルで作成することとが異なる理由がわかりません。ORMSなども使用していません。
バージョン
- ボトル: 0.9.dev
- Django: 1.2.1 ファイナル
- パイモンゴ: 1.8
助けてくれてありがとう!
更新: 友人がざっと見て、私の質問に答えるのに役立つかもしれない次のことに気付きました.
単一のプロセスが長時間実行され続ける Django とは対照的に、各リクエストは新しい Python プロセスを起動しているように見えます。