gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:34:51 24 4
gpt4 key购买 nike

AnyEvent::HTTP

在 Debian 和 Centos 上试过,都使用 perl 5.10

之后没有声音

perl -Mstrict -we 'use AnyEvent::HTTP; http_get "http://www.nethype.de/", sub { print $_[1] }; sleep 20'

模块是否存在根本性的问题,或者我是否需要更新的 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;

关于perl - AnyEvent::HTTP 基本示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com