使用perl 5.10
尝试使用Debian和Centos之后不是声音
perl -Mstrict -we 'use AnyEvent::HTTP; http_get "http://www.nethype.de/", sub { print $_[1] }; sleep 20'
是否存在基本上与模块有关的问题,或者我是否需要更新的perl版本,尽管我会期待有关它的投诉?
编辑:
所以我需要事件循环,是否有一些简单的例子可以证明AE::HTTP
用法?
答案 0 :(得分:5)
问题是sleep
不是AnyEvent的一部分,不执行允许AnyEvent :: HTTP异步获取的事件循环。当您阻止时,您希望阻止使用AE感知的东西,例如条件变量。
该程序创建一个名为$exit_wait
的条件变量,然后发出HTTP请求。在提出请求并收到响应时,程序可以继续运行。
一旦程序到达需要来自HTTP请求的信息的点,它就会在条件变量上调用recv
。这允许在HTTP请求也完成时触发回调。它只是转储$headers
哈希。
在这种情况下,我编写了它,以便回调也对条件变量执行send
,这会导致程序结束其recv
调用并继续。没有它,程序将处于无休止的等待状态。
如果不了解更多有关您申请的信息,我无法帮助您。
use strict;
use warnings;
use AnyEvent::HTTP;
use Data::Dump;
STDOUT->autoflush;
my $exit_wait = AnyEvent->condvar;
my $handle = http_request
GET => 'http://www.nethype.de/',
sub {
my ($body, $headers) = @_;
dd $headers;
$exit_wait->send;
};
# Do stuff here
$exit_wait->recv;
答案 1 :(得分:1)
您可能需要阅读比在第一个不完整的示例处停止更多的内容。 描述中的第一句是:
此模块是AnyEvent用户,您需要确保使用 并运行支持的事件循环。
有关AnyEvent *基本用法的文档(例如事件循环等),请参阅AnyEvent文档。