FTP连接/实例化导致应用卡顿

0 投票
1 回答
688 浏览
提问于 2025-04-18 14:12

我正在尝试通过FTP打开一个连接,用了一段简单的代码。但是这段代码在这一行就卡住了,既没有继续执行,也没有抛出任何异常或错误。我的代码已经有6个月了,这段时间我一直用它连接我的网站并下载文件。今天它在打开FTP连接时就开始卡住了。

你知道可能出什么问题了吗?

ftp = ftplib.FTP("www.mySite.com")  # hangs on this line
print("Im alive") # Never get printed out
ftp.login(username, password)

我和其他几个人一起管理这个网站,但我们没有做任何更改。

补充:我刚用Filezilla尝试用同样的用户名和密码进行FTP连接,但失败了。输出信息是:

状态:正在解析 www.mySite.com 的地址
状态:正在连接到 IPADDRESS...
状态:连接已建立,等待欢迎消息...
错误:连接超时
错误:无法连接到服务器
状态:等待重试...
状态:正在解析 www.mySite.com 的地址
状态:正在连接到 IPADDRESS...
状态:连接已建立,等待欢迎消息...
错误:连接超时
错误:无法连接到服务器

1 个回答

1

看起来你遇到了服务器的问题,不过如果你希望Python程序在等待服务器时出错,而不是一直等下去,你可以给ftplib.FTP加一个超时参数。在文档中有说明(https://docs.python.org/2/library/ftplib.html#ftplib.FTP

class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])

这个方法会返回一个新的FTP类的实例。当你提供了主机名(host)时,它会自动调用连接方法connect(host)。如果你还提供了用户名(user),它会再调用登录方法login(user, passwd, acct)(其中passwd和acct如果不提供,默认是空字符串)。可选的超时参数(timeout)是用来设置连接尝试等阻塞操作的超时时间,单位是秒(如果不指定,就会使用全局的默认超时时间设置)。

在2.6版本中进行了更改:增加了超时参数。

撰写回答