AnyEvent::HTTPAnyEvent :: HTTP基本的例子不工作
試圖在Debian和CentOS,都用Perl 5.10
一點聲音有什麼用模塊根本打破,或我是否需要更新的perl版本,儘管我會期望對此有所抱怨?
編輯:
所以我需要事件循環,有沒有一些簡單的例子,這將顯示出AE::HTTP
使用?
AnyEvent::HTTPAnyEvent :: HTTP基本的例子不工作
試圖在Debian和CentOS,都用Perl 5.10
一點聲音有什麼用模塊根本打破,或我是否需要更新的perl版本,儘管我會期望對此有所抱怨?
編輯:
所以我需要事件循環,有沒有一些簡單的例子,這將顯示出AE::HTTP
使用?
問題是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;
您可能需要進一步閱讀,而不是停留在第一個不完整的示例中。 描述中的第一句話是:
這個模塊是一個AnyEvent用戶,你需要確保你使用 並運行支持的事件循環。
有關AnyEvent *的基本用法(例如事件循環等)的文檔,請參閱AnyEvent文檔。
我喜歡[這個解釋](http://perlmaven.com/fetching-several-web-pages-in-parallel-using-anyevent)。 – reinierpost