本人遇到坑的代码如下:
from flask import Flask, request
app = Flask(__name__)
##创建服务的sftp的连接
def get_scanner_sftp_connect():
host = config.remote_host # 主机
port = config.remote_port # 端口
username = config.remote_username # 用户名
password = config.remote_password # 密码
sf = paramiko.Transport(host, port)
sf.connect(username=username, password=password)
scanner_sftp = paramiko.SFTPClient.from_transport(sf)
return scanner_sftp
# scanner_sftp = get_scanner_sftp_connect() ####创建扫描仪服务链接sftp服务器
@app.route("/test_sftp", methods=["POST"])
def test_sftp():
print("创建连接")
scanner_sftp = get_scanner_sftp_connect
scanner_sftp.close()
return "d调用结束"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=40000, debug=True)
以上代码运行一段时间之后,尤其是调用接口的并发量很大的时候,就会报出以下问题:
Error reading SSH protocol banner[Errno 104] Connection reset by peer
Authentication failed Authentication timeout
解决之后的代码如下:
from flask import Flask, request
app = Flask(__name__)
##创建服务的sftp的连接
def get_scanner_sftp_connect():
host = config.scanner_remote_host # 主机
port = config.scanner_remote_port # 端口
username = config.scanner_remote_username # 用户名
password = config.scanner_remote_password # 密码
sf = paramiko.Transport(host, port)
sf.connect(username=username, password=password)
sf.banner_timeout = 60##如果不添加这个运行一段时间之后会报Error reading SSH protocol banner[Errno 104] Connection reset by peer,并且让运维组调整服务器ssh的最大连接数即可解决
scanner_sftp = paramiko.SFTPClient.from_transport(sf)
return scanner_sftp,sf
# scanner_sftp = get_scanner_sftp_connect() ####创建扫描仪服务链接sftp服务器
@app.route("/test_sftp", methods=["POST"])
def test_sftp():
print("创建连接")
scanner_sftp,sf= get_scanner_sftp_connect
scanner_sftp.close()
sf.close()##增加这个关闭才算是完全关闭
return "d调用结束"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=40000, debug=True)



