Я настраиваю бэкэнд колбы с помощью sshtunnel и sqlalchemy. Моя база данных (MySQL) имеет туннельное соединение через экземпляр EC2 в AWS.
У меня ошибка тайм-аута, возможно, из-за неправильной установки параметров.
from app.api import app
from flask_sqlalchemy import SQLAlchemy
import sshtunnel
import sqlalchemy
from io import StringIO
def getSessionServer():
#"""
user='db_root_user'
ssh_user = 'ssh_user'
passwssh = "passwdssh"
passw= 'db_root_passwd'
dbName = 'db_name'
localhost = 'database_endpoint'
port = 3306
host = 'ec2_public_ip'
tunnel = sshtunnel.SSHTunnelForwarder(
(host,22),
ssh_password = passwssh,
ssh_username=ssh_user,
remote_bind_address=(localhost, port)
)
tunnel.start()
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(
user,
passw,
localhost,
tunnel.local_bind_port,
dbName)
db = SQLAlchemy(app)
return db
У меня ошибка тайм-аута при вызове одного запроса.
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'database_endpoit' (timed out)")
(фон этой ошибки: http://sqlalche.me/e/e3q8)