sql >> データベース >  >> RDS >> PostgreSQL

Postgres SSL SYSCALLエラー:PythonとpsycopgでEOFが検出されました

    エラー:psycopg2.operationalerror: SSL SYSCALL error: EOF detected

    セットアップ:エアフロー +赤方偏移 + psycopg2

    いつ:クエリに長いかかる 実行時間(300秒以上)。

    この場合、ソケットタイムアウトが発生します。エラーのこの特定の変形を解決するのは、接続文字列にキープアライブ引数を追加することです。

    keepalive_kwargs = {
        "keepalives": 1,
        "keepalives_idle": 30,
        "keepalives_interval": 5,
        "keepalives_count": 5,
    }
    
    conection = psycopg2.connect(connection_string, **keepalive_kwargs)
    

    Redshiftにはkeepalives_idleが必要です 300未満の値。30の値が私のために働いた、あなたのマイレージは変わるかもしれません。 keepalives_idleが 設定する必要があるのは引数だけですが、keepalivesを確認してください 1に設定されています。

    postgresキープアライブに関するドキュメントへのリンク。

    300タイムアウトについてアドバイスするエアフロードキュメントへのリンク。



    1. SQL Serverのセッションコンテキストでのキーと値のペアの設定(sp_set_session_context)

    2. MySQLで指定された位置にあるリストアイテムを見つける方法

    3. カンマリストでのMySQL検索

    4. PostgreSQLのクラウドデータベースオプションの比較