1

Django アプリが結果を保存するサーバーに POST 要求を送信するデスクトップ アプリケーションがあります。DB サーバーと Web サーバーが同じマシン上になく、接続が非常に短時間失われることがありますが、一部のリクエストでは接続エラーが発生します。

OperationalError: (2003、「'xxx.xxx.xxx.xxx' (110) の MySQL サーバーに接続できません」)

「通常の」Web サイトでは、あまり心配する必要はないと思います。ブラウザに 500 エラー ページが表示され、訪問者は後で再試行します。私の場合、リクエストによって投稿された情報を失うことはオプションではなく、これをどのように処理するのか疑問に思っていますか? この例外をキャッチして、接続が戻ってくるのを待って (遅延は問題ではありません)、プロセスを続行します。しかし、コードのどこでも例外が発生する可能性があるため、どのように処理を進めればよいのか、少し困っています。

アドバイスありがとうございます。

4

2 に答える 2

1

yourproject/wsgi.py で、django の wsgi アプリケーションを装飾する独自の WSGI アプリケーションを作成できます。

装飾されたアプリケーションから wsgi アプリケーション デコレータが受け入れられない場合、しばらく待ってから再試行することができます。

しかし実際には、クライアントを修正する必要があります。クライアントは、稼働中のサーバーに 24 時間年中無休で接続されることを期待すべきではありません。それまでは、このデスクトップ クライアントをユーザーとして推し進めるつもりはありません。

于 2012-06-07T11:58:09.617 に答える
1

process_view メソッドと try / except 呼び出しをラップするミドルウェアを使用できます。

または、ビューを装飾して、そこで呼び出しをラップすることもできます。

または、ディスパッチ メソッドまたは overriden.dispatch にメソッド デコレーターを持つ基本クラスでクラス ベースのビューを使用することもできます。

本当に、あなたにはたくさんの解決策があります。

前述のように、デスクトップ アプリケーションも変更する必要があるかもしれません。

于 2012-06-07T16:18:50.503 に答える