【发布时间】:2018-03-18 08:02:59
【问题描述】:
我在 Flask 中构建了一个 API,它使用 Keras 对文本消息进行分类。我目前正在使用sshtunnel 和MySQLdb 连接到MySQL 数据库以从远程数据库中获取消息。整个应用程序被包装在一个 Docker 容器中。
我能够建立到远程数据库的连接并成功查询它,但是每次 POST 请求进入 API 时我都会打开和关闭一个新的 ssh 隧道,这会降低性能。
我曾尝试打开一个 ssh 隧道和数据库连接“来统治它们”,但如果一个小时左右后没有任何活动,连接就会失效,然后 API 请求需要永远和一天才能完成。
你是怎么做到的?这种缓慢是不可避免的还是有办法定期刷新 ssh 和数据库连接?
这是我为每个传入请求连接到我的数据库的方式:
with SSHTunnelForwarder(
(host, 22),
ssh_username=ssh_username,
ssh_private_key=ssh_private_key,
remote_bind_address=(localhost, 3306)
) as server:
conn = db.connect(host=localhost,
port=server.local_bind_port,
user=user,
passwd=password,
db=database)
【问题讨论】:
-
如果你真的必须这样做,为什么不打开应用程序外部的隧道
ssh -L 3306:localhost:3306 user@remote,然后将你的应用程序指向localhost:3306?但是,如果您真的关心性能,则应尽可能将数据库和应用程序放在同一网络上。
标签: python mysql docker ssh flask