EmB*_*Bee 5 python sockets ftp multithreading
我的FTP下载脚本(基于ftplib)挂在大量下载上.我正在使用的远程服务器,虽然高度可配置(proftpd)无法通过远程网络强加的防火墙限制.
我被限制在我的公司使用被动模式,即IT不会为我打开端口以允许FTP活动模式.
所以,我被困在被动模式中.
远程服务器在大型下载中断开10到15分钟.
我需要在大量下载期间保持控制连接的活动状态.我应该使用线程,每十秒发送一次'NOOP'命令吗?如果是这样的话,你会不会向我发送一些可以解决问题的示例代码?我需要将多个值传递给我的FTP下载功能.keepalive函数不需要传递给它的任何参数.
或者,有没有办法控制我在端口21(控制连接)上使用的特定套接字,以便在端口nnnnnn上进行大量下载时保持活动状态?
非常感谢!
您还可以通过添加以下代码来尝试使用TCP KeepAlive功能:
import socket
ftp.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
Run Code Online (Sandbox Code Playgroud)
TCP KeepAlive的支持是高度平台和防火墙相关的 - 因此无法保证,但它是为此目的而设计的,它比添加额外的线程要简单得多.你在哪个平台上工作?