Ich muss einige gleichzeitige XML-Feed-Anforderungen in Perl machen. Was ist der schnellste Weg, dies zu tun?Was ist der schnellste Weg, um gleichzeitige Web-Anfragen in Perl zu machen?
Antwort
Ich würde wahrscheinlich AnyEvent verwenden, vielleicht so:
use AnyEvent;
use AnyEvent::HTTP;
sub get_feeds {
my @feeds = @_;
my $done = AnyEvent->condvar;
my %results;
$done->begin(sub { $done->send(\%results) });
for my $feed (@feeds){
$done->begin;
http_get $feed, sub { $results{$feed} = \@_; $done->end };
}
$done->end;
return $done;
}
my $done = get_feeds(...);
my $result = $done->recv; # block until all feeds are fetched
Der Link zu AnyEvent :: HTTP ist http://search.cpan.org/~mlehmann/AnyEvent-HTTP/. – gpojd
I verwendet LWP::Parallel::UserAgent für etwas ähnliches. Ein Beispiel aus dem POD:
require LWP::Parallel::UserAgent;
$ua = LWP::Parallel::UserAgent->new();
...
$ua->redirect (0); # prevents automatic following of redirects
$ua->max_hosts(5); # sets maximum number of locations accessed in parallel
$ua->max_req (5); # sets maximum number of parallel requests per host
...
$ua->register ($request); # or
$ua->register ($request, '/tmp/sss'); # or
$ua->register ($request, \&callback, 4096);
...
$ua->wait ($timeout);
...
sub callback { my($data, $response, $protocol) = @_; .... }
LWP :: Parallel versagt seine Tests im Moment jedoch. –
Ich denke, es ist nicht mehr gepflegt. Ich habe all meine Arbeit verschoben, um AnyEvent :: HTTP zu verwenden. – gpojd
HTTP::Async ist ziemlich schnell und sehr leicht zu Code.
Entscheidend ist, dass es HTTP :: Response-Objekte zurückgibt, sodass Sie es anstelle von LWP fast schmerzfrei einfügen können. –
Eigentlich ist AnyEvent::Curl::Multi eine nicht blockierende Bibliothek, die auf libcurl aufgebaut ist. Sehr schnell und tonnenweise Nebenläufigkeit verfügbar. Viel mächtiger als AnyEvent :: HTTP, IMO.
- 1. Ist perl der schnellste Weg, um eine Hochleistungsseite zu schreiben?
- 2. Was ist der einfachste Weg, mehrere Webanfragen hintereinander zu tätigen?
- 3. Was ist der schnellste Weg, um zu rehasen?
- 4. Was ist der schnellste Weg, um eine Datenzeile zu erfassen?
- 5. Was ist der schnellste Weg, um eine SIMD-Sammlung ohne AVX (2) zu machen?
- 6. Was ist der schnellste Weg zu überprüfen, ob eine Website in Perl oder C ist?
- 7. Was ist der einfachste Weg, um eine HTTP-GET-Anfrage in Perl zu machen?
- 8. Was ist der beste Weg, um eine tiefe Kopie einer Datenstruktur in Perl zu machen?
- 9. Was ist der effiziente Weg, um ein Berechtigungssystem zu machen?
- 10. Was ist der Django-Weg, um einen Subselect zu machen?
- 11. Was ist der schnellste Weg zu HTTP GET in Python?
- 12. Was ist der schnellste Weg, Patches eines Arrays zu vergleichen?
- 13. Was ist der schnellste Weg zu einem sehr einfachen Blog?
- 14. Was ist der schnellste Weg, CRUD über CGI auf einem Datenbank-Handle in Perl zu bekommen?
- 15. Was ist der beste Weg, um einen Index zu erstellen, um die schnellste Leseantwort zu erhalten?
- 16. Was ist der schnellste Weg, um eine gleichzeitige Warteschlange mit NUR einem Consumer und einem Producer zu implementieren?
- 17. Was ist der schnellste Weg, mehrere Dateien zu catchen?
- 18. Was ist der schnellste Weg, um eine große Liste in Python 2.7 zu speichern/zu laden?
- 19. Was ist der schnellste Weg, Google Storage Bucket zu duplizieren?
- 20. Was ist der schnellste Weg, Daten von ArrayList zu filtern?
- 21. Was ist der beste Weg, Ausnahmen in Perl zu behandeln?
- 22. Was ist der schnellste Weg, um Symbolereignisse in Java zu sammeln?
- 23. Was ist der schnellste Weg, um eine ganze Datei in einem String in Scala zu lesen?
- 24. Was ist der schnellste Weg, um eine Matrix in eine Textdatei in Octave zu schreiben?
- 25. Der schnellste Weg, um einen String mit zwei Unstimmigkeiten in großen Dateien in Perl zu suchen?
- 26. Was ist der schnellste Weg, um die Vereinigung vieler Boost :: Polygone zu erstellen?
- 27. Was ist der schnellste Weg, um Server-zu-Server-Anrufe durchzuführen?
- 28. Was ist der einfachste Weg, Einstellungsdateien in Java zu machen?
- 29. Was ist der schnellste Weg, um programmatisch die Wohlgeformtheit von XML-Dateien in C# zu überprüfen?
- 30. Was ist der schnellste Weg, um große XML-Dokumente in Python zu analysieren?
Meinst du das schnellste wie in: eine Lösung, die am schnellsten zu implementieren ist, oder eine Lösung, die nach der Implementierung am schnellsten ist? – Marcus