[英]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.