Estoy usando paramiko para conectarme a un servidor SFTP en el que tengo que descargar y procesar algunos archivos.Prevenir el tiempo de espera de sesión SFTP/SSH con paramiko
El servidor tiene un tiempo de espera establecido en 5 minutos, pero algunos días sucede que el procesamiento de los archivos puede tomar más tiempo que el tiempo de espera. Por lo tanto, cuando quiero cambiar el directorio de trabajo en el servidor para procesar algunos otros archivos sftp.chdir(target_dir))
que recibo una excepción que la conexión ha caducado:
Archivo buildbdist.win32eggparamikosftp: //ftp.py, línea 138, en _write_all aumentar EOFError()
para contrarrestar esto pensé que la activación de la vida mantener sería la mejor opción, así que utiliza el "set_keepalive" en el transporte para establecerlo en 30 segundos:
ssh = paramiko.SSHClient()
ssh.set_missing_hostkey_policy(paramiko.AutoAddPolicy())
ssh.connect(ssh_server, port=ssh_port, username=ssh_user, password=password)
transport = ssh.get_transport()
transport.set_keepalive(30)
sftp = transport.open_sftp_client()
Pero nada cambia en absoluto. El cambio no tiene absolutamente ningún efecto. No sé si estoy entendiendo mal el concepto de set_keepalive
aquí o tal vez el servidor (en el que no tengo acceso) ignora los paquetes keep alive.
¿No es esta la manera correcta de contrarrestar este problema o debería intentar un enfoque diferente? No me gusta la idea de enviar "manualmente" un comando ls
al servidor para mantener la sesión activa.
Los paquetes de Keepalive se ignoran en el servidor. Son solo para evitar que las conexiones de red excedan el tiempo de espera. – JimB