私はデータベースとの接続を確立したPythonでコードを書いています。私はループでクエリを持っています。ループでクエリが実行されている間に、ネットワークケーブルを抜いた場合、例外が発生して停止する必要があります。しかし、これは起こりません.2分後にもう一度ネットワークキャビネットを接続すると、終了した場所から再び開始されます。私はlinuxとpsycopg2を使用しています。例外が表示されないPythonでのdb接続
答えて
データベース接続は、ほぼ確実にTCPソケットに基づいています。 TCPソケットは失敗する前に長時間リトライしていますが、(Pythonで)例外が発生します。言うまでもなく、データベース層で再試行/自動再接続を試みることはありません。
ダグラスの答えによると、TCPのために例外は発生しません。
socket.setdefaulttimeout()を使用して、より短いタイムアウト値を設定できます。データベース接続は、例えば、Pythonのソケットでネイティブソケットを構築されていない場合
setdefaulttimeout(...)は
setdefaulttimeout(timeout) Set the default timeout in floating seconds for new socket objects. A value of None indicates that new socket objects have no timeout. When the socket module is first imported, the default is None.
しかし、それは動作しない場合があります。
クライアントライブラリがサーバーにどのように接続していても機能するタイムアウトを実装する場合は、DB操作を別のスレッドで実行するか、別の処理として実行するのが最善です/ processは必要に応じてkillすることができます。 Python 2.6標準ライブラリのマルチプロセッシングモジュールを参照してください(必要に応じて、バックポートバージョン2.5があります)。プロセスを削除すると、オペレーティングシステムがリソースの割り当てを解除してクリーンアップすることになりますが、スレッドを強制終了することは、常に安全でないばかげたビジネスであるため、プロセスはより優れています。
詳細は – ha22109
を参照してください。http://docs.python.org/library/multiprocessing.htmlで始まります。標準ライブラリ(2.6以降のPython; 2.5を使用している場合はマルチプロセッシングモジュールを使用する方法を説明しています) code.google.com/p/python-multiprocessing/からバックポートをインストールします)。多くの詳細を記述するためのスペースはあまりありませんが、2つのキューをquinとquoutにし、QueueでProcessを作成し、SQLクエリを必要とするときにquinにプッシュします。プロセスはそのQueueで待機し、クエスチョンを引き出し、結果をクワウトでプッシュします。要求プロセスは時間がかかり過ぎると他のプロセスを強制終了します。 –
- 1. DB接続タイムアウトシミュレーション
- 2. 接続エラーモンゴDB
- 3. マルチプルインメモリDB接続?
- 4. AjaxでのDB接続
- 5. DB接続のファンタムエラー
- 6. golangの接続DB
- 7. エンティティフレームワークエラーでMySQL DBを接続
- 8. JavaでMySQL DBに接続
- 9. PHPクラスDB接続
- 10. クラウドDBに接続
- 11. rds db接続リーク
- 12. プレイフレームワーク:DB接続プールシャットダウン
- 13. DB接続飢餓
- 14. DB接続のExcel VBAスクリプト
- 15. FastcgiとApacheの接続db
- 16. UnixとOracle DBの接続
- 17. Stardog DBとJavaの接続
- 18. 複数のDB接続は
- 19. jTDSのモックDB接続?
- 20. SQL Db接続のテスト
- 21. DBに接続中のマングースエラー
- 22. ASP.Net DB接続の問題
- 23. ハンドルDB接続エラーのバッチスクリプト
- 24. DB接続の基本エラー
- 25. PHPのファンクションとDB接続
- 26. PostgreSQL dbとSails.jsの接続
- 27. Oracle DB接続の問題
- 28. Play2.5 MySQLデータベースの接続エラー:データベースに接続できない[DB]
- 29. CakephpでのDB接続エラーの処理
- 30. カスタムスレッドスクリプトでのDjango DB接続の使用
コードを表示しますか? –
「緊急の助けが必要です」と叫ぶことは、おそらく同情を得る最良の方法ではありません。 – bortzmeyer