Perl即发即弃HTTP请求

问题描述 投票:0回答:2

这是not与后台/异步HTTP请求相同。

是否有一种方法可以触发HTTP PUT请求,而不必等待响应或成功/失败的确定?

我的代码库是单线程和单进程。

我愿意接受修补猴子的LWP :: UserAgent->请求。

perl http nonblocking lwp lwp-useragent
2个回答
3
投票

[当第一个数据进入时,您可以放弃处理响应:

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $resp = $ua->put('http://example.com/', ':content_cb' => sub { die "break early" });
print $resp->as_string;

[您也可以使用HTTP::Request-new('PUT',...)->as_string创建请求,使用IO::Socket::IP->new(...)或(对于https)IO::Socket::SSL->new(...)创建套接字,并通过套接字发送此请求-然后在您做其他事情的同时让套接字保持打开状态程序。

但是第一种方法是在:content_cb中提早中断。与您自己制作和发送请求相反,它可以确保服务器至少从开始发送回响应以来就开始处理您的请求。


1
投票

如果您对LWP的替代品持开放态度,则Mojo::UserAgent是非阻塞用户代理,使用该代理时,您可以控制事件循环如何处理响应。例如,如本食谱中所述,您可以change the handling of the response stream。这可以用来简单地忽略流,或执行其他操作。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.