私はKerasでテキストメッセージの分類を実行するFlaskにAPIを構築しました。現在、sshtunnel
とMySQLdb
を使用してMySQLデータベースに接続し、リモートデータベースからメッセージを取得しています。アプリケーション全体がDockerコンテナにラップされています。Python Flask APIでSSHトンネルとMySQL接続を確実に開いたままにするにはどうしたらいいですか?
私はリモートデータベースへの接続を確立して正常にクエリを実行できますが、POSTリクエストがAPIに入る度に新しいsshトンネルを開いて閉じているため、パフォーマンスが低下します。
私は1時間以上経ってもアクティビティがないと接続が失効し、その後APIリクエストが完了するまでに1時間かかります。
これはどのように行いましたか?この遅さは避けられませんか、定期的に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':その後、3306ユーザーの@ remote'とは'ローカルホストでアプリケーションを指しますか?パフォーマンスに関して本当に気にしているのであれば、可能であればデータベースとアプリケーションを同じネットワークに配置する必要があります。 – Suever