20 以上のモジュールを持つ Python アプリケーションがあり、そのほとんどは複数の Web アプリケーションとコンソール アプリケーションによって共有されています。
マルチ モジュール Python アプリでデータベース接続を確立および管理するためのベスト プラクティスを明確に理解したことがありません。次の例を検討してください。
ユーザーのオブジェクト クラスを定義するモジュールがあります。データベースでユーザーを作成/削除/更新するための多くの定義があります。users.py モジュールは、a) コンソール ベースのユーティリティ、2) web.py ベースの Web アプリケーション、および 3) 常に実行されているデーモン プロセスにインポートされます。
これら 3 つのアプリケーションには、それぞれ異なるライフサイクルがあります。デーモンは、接続を開き、開いたままにすることができます。コンソール ユーティリティは接続し、機能し、その後終了します。もちろん、http 要求はアトミックですが、Web サーバーはデーモンです。
私は現在、Users クラスの各関数内で接続を開き、使用して閉じています。これは最も効率が悪いように見えますが、すべての例で機能します。テストとして使用される代替手段は、モジュール全体のグローバル接続を宣言して開くことです。別のオプションは、最上位のアプリケーション層で接続を作成し、クラスをインスタンス化するときに参照を渡すことですが、これは私には最悪の考えです。
私は、すべてのアプリケーション アーキテクチャが異なることを知っています。ベストプラクティスがあるかどうか疑問に思っていますが、それはどうなるでしょうか?