繁体   English   中英

从 ftp 下载文件时 perl 超时

[英]perl timeout when downloading file from ftp

我尝试下载大文件,这需要使用 perl 从 ftp 链接下载大量时间。 我有:

Timeout at C:/Strawberry/perl/lib/Net/FTP.pm

这是什么意思以及如何解决?

谢谢

解决方案:谢谢@Chris Doyle 我在我的 perl 文件"not ftp.pm file"更改了超时值谢谢

您可以增加超时,但重要的是,如果再次达到超时并且您的服务器/客户端不同步,它可能会再次抛出您第一次遇到的相同错误。

问题似乎是由于您的 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 是您用来访问 ftp 的第三方模块( Kind of library ),我建议您不要碰它以避免以后出现便携性问题。

通常在 FTP.pm 内达到超时并进入或打印“出现错误”条件,但在某些情况下,服务器/客户端只是不同步并且 FTP.pm 只是抛出一个未处理的异常.

此异常不会进入或打印“出现错误”条件,因此您需要像任何其他语言一样捕获它并处理它。

在这里,您可以使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM