我尝试下载使用perl从ftp链接下载大量时间的大文件。 我得到了:
Timeout at C:/Strawberry/perl/lib/Net/FTP.pm
这意味着什么以及如何解决它?
由于
解决方案:
谢谢@Chris Doyle
我更改了perl文件"not ftp.pm file"
中的超时值
感谢
答案 0 :(得分:0)
您可以增加超时,但重要的是,如果再次达到超时并且您的服务器/客户端不同步,则可能会再次出现您第一次遇到的相同错误。
似乎问题是由于Perl脚本中缺少错误处理。
你的perl脚本肯定会有这样的东西:
my $ftp = Net::FTP->new( $myhost, Timeout => 10, Debug => 1 );
...
$ftp->get($myfile) or print "Got an error";
$ftp->quit();
请注意这是 ... / perl / lib / Net / FTP.pm ,因为 FTP.pm是您正在使用的第三方模块(
Kind of library
) 到达ftp,我建议你不要触摸它以避免便携性 问题稍后。
通常在FTP.pm内达到超时并进入或打印“有错误”条件,但在某些情况下,服务器/客户端只是不同步并且FTP.pm只会抛出一个未处理的异常。
此异常将 NOT 转到或打印“收到错误”条件,因此您需要捕获它并像处理其他任何语言一样处理它。
在这里,您可以使用eval将代码包装起来,捕获异常并根据需要进行处理。
例如:
my $ftp = Net::FTP->new( $myhost, Timeout => 10, Debug => 1 );
...
eval {$ftp->get($myfile) or print("Can't get file $myfile") };
if ($@ =~ /Timeout/) {
print "Got a timeout Issue: $@";
}
$ftp->quit();