7

WSGI の下で Django を使用して MySQL を削除しました。stackoverflow でこの問題のエントリを見つけましたが、特に Django に関するエントリは見つかりませんでした。Google は、回避策 (時々 Web サイトをポーリングする、またはデータベースのタイムアウトを増やすなど) を除いて、役に立ちません。決定的なものはありません。技術的には、サーバーが接続をハングさせた場合、Django および/または MySQLdb (私は最新の 1.2.3c1 を使用しています) は再接続を試みる必要がありますが、これは起こりません。回避策なしでこの問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

Django 開発者は、 https://code.djangoproject.com/ticket/21597#comm:29で、このようなすべての質問に対して 1 つの短い答えを出しました。

  • 解決策をwntfixに設定

実際、これは #15119 以降の意図された動作です。理由については、そのチケットを参照してください。

この問題に遭遇し、何が起こっているのか理解したくない場合は、このチケットを再度開かずに、次のようにしてください。

  • 推奨される解決策:from django.db import connection; connection.close()プログラムが長時間アイドル状態になることがわかっている場合は、 との接続を閉じます。

  • CRAPPY SOLUTION:wait_timeoutを増やして、プログラムの最大アイドル時間よりも長くします。

このコンテキストでは、アイドル時間は、2 つの連続するデータベース クエリ間の時間です。

于 2015-09-24T15:48:33.287 に答える
3

show variables like 'wait_timeout';

これは、「mysql gone away」エラーをスローバックする設定です。
非常に大きな値に設定して、「mysql gone away」エラーを防ぐ
か、特定の期間後に mysql 接続を単純に再 ping します。

于 2010-11-10T16:08:03.620 に答える
1
  • ビューを処理する前に、MySQL 接続 (タイムアウトした場合に再接続する) に ping() するミドルウェアを作成できます。

  • ミドルウェアを追加して、例外をキャッチし、再接続し、ビューを再試行することもできます (上記のソリューションをより単純なものとして好むと思いますが、技術的には機能し、タイムアウトがまれであると仮定するとパフォーマンスが向上するはずです。これはまた、失敗したビューには側面がないことを前提としています)これは望ましいプロパティですが、特にビュー内のデータベースだけでなくファイルシステムにも書き込む場合は、実行が難しい場合があります。)

于 2012-03-14T12:54:01.573 に答える