У меня есть приложение Flask, которое подключается к удаленной базе данных PostgreSQL (на Amazon RDS). Вот пример того, как подключиться к базе данных:Flask auto-reconnect PostgreSQL
import psycopg2
import sys
from flask import (Flask, render_template, request, redirect, url_for)
# Start a Flask app
app = Flask(__name__, static_url_path='')
# Connect to RDS database
con = psycopg2.connect(**params)
cur = con.cursor()
@app.route('/', methods=['GET'])
def index():
global cur
args = {}
try:
cur.execute("SELECT * FROM x_table")
except psycopg2.InterfaceError:
con = psycopg2.connect(**params)
cur = con.cursor()
# some additional code here ...
return render_template('index.html', args=args)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0")
У меня есть проблема в том, что после нескольких минут бездействия, соединение закрывается, и я должен перезапустить приложение. Я добавил элемент управления исключения, чтобы поймать эту ошибку и снова подключиться, но я все еще получаю ошибку, что курсор уже закрыт.
Каков правильный способ автоматического повторного подключения?
Вы уже обработали ошибку. Вам просто нужно скопировать строку 'execute()' в конец блока 'except'. И из причины хранить и обрабатывать результаты запроса. –