2017-12-10 4 views
2

In diesem vereinfachend Skript mache ich eine GET-Anfrage mit Net::Async::HTTPIO::Async::Loop::EV mit: Warum bekomme ich diese Perl Net :: Async :: HTTP Warnung?

use Modern::Perl '2017'; 
use IO::Async::Loop::EV; 
use Net::Async::HTTP; 
use Future; 

my $loop = IO::Async::Loop::EV->new; 
my $http = Net::Async::HTTP->new(max_redirects => 0); 
$loop->add($http); 

my $f = $http->GET('https://www.perl.org') 
->then(sub { 
     my $response = shift; 
     printf STDERR "got resp code %d\n", $response->code; 
     return Future->done; 
    }); 
$http->adopt_future($f->else_done); 

$loop->run; 

ich diese Warnung ein paar Mal erhalten:

EV: error in callback (ignoring): Can't call method "sysread" on an undefined value at .../IO/Async/Stream.pm line 974 

ich diese Warnung bei der Verwendung von IO::Async::Loop::Event auch (wieder in IO::Async::Stream, in Zeile 974).

Für nicht sichere (http) Links sieht jedoch alles gut aus. Also stimmt etwas nicht mit IO::Async::SSL. (Ich habe dies auf verschiedenen Maschinen mit unterschiedlichen Betriebssystemen versucht - immer noch mit diesen Warnungen)

Warum erhalte ich diese Warnung mehrmals? Tritt es auch auf Ihren Maschinen auf?

+1

Ist die Warnung der Dateinamen und die Zeilennummer weglassen? – choroba

+0

@choroba Bearbeitet. Warnung ist in Zeile 974 in IO :: Async :: Stream –

Antwort

0

Es scheint, dass diese Warnung spezifisch für die IO::Async::Loop::EV Implementierung ist. Wenn Sie nur

use IO::Async::Loop; 
my $loop = IO::Async::Loop->new; 

dann scheint es, um gut zu funktionieren. Wenn du das nicht für einen bestimmten Zweck auswählst, ist es am besten, es zu vermeiden und lass den IO::Async::Loop->new magischen Erbauer einen guten finden.

Zusätzlich anstatt das Skript mit der Endung

$loop->run 

könnten Sie stattdessen verwenden

$f->get 

so führt es eine Blockierung warten, bis das Future abgeschlossen ist, aber dann sauber danach verlässt, um nicht zu <Ctrl-C> haben, um es abzubrechen.


Ich habe dies erhöht als Bug gegen IO :: Async :: Schleifen :: EV bei https://rt.cpan.org/Ticket/Display.html?id=124030

Verwandte Themen