当前位置:  开发笔记 > 编程语言 > 正文

AnyEvent :: HTTP基本示例不起作用

如何解决《AnyEvent::HTTP基本示例不起作用》经验,为你挑选了1个好方法。

AnyEvent :: HTTP

使用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用法吗?



1> Borodin..:

问题是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;

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有