知道 FTP 是否仍然与 ftplib 连接

Knowing whether or not FTP is still connected with ftplib

我想知道是否有一种简单的方法可以使用 ftplib 了解与 FTP 服务器的连接是否仍处于活动状态。

因此,如果您有这样的活动连接:

import ftplib
ftp = ftplib.FTP("ftp.myserver.com", "admin", "pass123")

是否有类似以下伪代码的东西可以查询以检查连接是否仍处于活动状态?

if ftp.is_connected() == True:
    print "Connection still active"
else:
    print "Disconnected"

您可以尝试从服务器检索某些内容,并捕获任何异常并返回它是否基于此连接。

例如:

def is_connected(ftp_conn):
    try:
        ftp_conn.retrlines('LIST')
    except (socket.timeout, OSError):
        return False
    return True

这个简单的示例会将 'LIST' 结果打印到标准输出,您可以通过将自己的回调放入 retrlines method

来更改它

(确保在初始 FTP 对象构造中设置超时,因为默认值为 None。)

ftp = ftplib.FTP("ftp.gnu.org", timeout=5, user='anonymous', passwd='')