【发布时间】:2018-04-06 07:06:17
【问题描述】:
我有一个非常大的 xml,我试图将其传递给特定端口上的 Spark。以下是我使用 POST 请求提交 xml 的代码。
my $_fileName = "/home/temp/UTC+08_20180406_1414000_xyz";
open (XMLFILE, $_fileName);
while (<XMLFILE>) {
$_xml.=$_;
}
close (XMLFILE);
my $_url="http://localhost:8100/request/UTC+08_20180406_1414000_xyz";
my $curl = LWP::UserAgent->new();
my $response = $curl->post($_url, 'Content' => $_xml, 'Content-type'=>'text/xml' );
if ($response->is_success)
{
print("new job created (requestId: $_requestId)\n");
return &checkXMLStatus($response->decoded_content);
}
else
{
print("Job can't be processed: ".$response->status_line);
return ("StatusRejected", $response->status_line, 0);
}
当 xml 很小时,就没有问题。但是当我提交一个非常大的 xml 文件说超过 100000 行时,请求超时并出现以下错误:
“500 读取超时”正好在 180 秒之后。 我检查了 LWP 的 CPAN 页面,默认超时时间为 180。
是否可以增加超时时间。使用 LWP 的 POST 请求不能发送非常大的 xml 文件有什么限制吗??
【问题讨论】:
-
这样一个 100,000 行的 XML 文件的字节数是多少?我无法想象它会超过几 MB。
-
你为什么要这样逐行准备xml?是不是更简单:
my $xml = do { local $/; <XMLFILE>};一口气读完? -
@Borodin:10 - 50 MB
-
你为什么将
LWP::UserAgent对象命名为$curl? -
是的,我认为 $ua 而不是 $curl 会是更好的选择。