ページの先頭行へ戻る
Enterprise Postgres 17 SP1 Connection Manager 利用ガイド

3.6 Python言語用パッケージ(psycopg)での使用方法

Python言語用パッケージ(psycopg)を利用してConnection Managerを使用する際の注意点について説明します。

Python言語用パッケージ(psycopg)では、psycopg.Connectionクラスとpsycopg.AsyncConnectionクラスを使用することでConnection Managerと連携することができます。この2つのクラスで定義されていないメソッドを使用する場合は、“3.3 libpqでの使用方法”も併せて参照してください。

Python言語用パッケージ(psycopg)では、Connection Managerの生死監視機能は利用できません。したがって、Python言語用パッケージ(psycopg)で生死監視を行う場合は、TCP keepalive機能を利用します。ただし、TCP keepalive機能には、“1.1.1 TCP keepaliveとの違い”に挙げたようなデメリットが存在します。これについては、以下のように対処してください。

TCP層で相手側からの受信通知(ACK)を受け取れずにパケットの再送を繰り返している最中にはkeepaliveが機能しない問題について
LinuxLinuxの場合

tcp_user_timeoutパラメータを設定してください。Python言語用パッケージ(psycopg)はlibpqを用いて通信するため、libpqのtcp_user_timeoutパラメータが利用できます。

WindowsWindowsの場合

レジストリ(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters)のTcpMaxDataRetransmissionsの値を設定してください。ただし、OS全体に影響を及ぼすため、設定する値には十分注意してください。

keepaliveのための定期的なパケットがTCPソケット単位で送信されることが原因でネットワーク負荷が重くなる問題について

keepalive機能を有効化する必要があるため、対処方法はありません。そのため、Python言語用パッケージ(psycopg)を直接利用する場合には十分注意してください。