Was ist die bevorzugte Methode zum Ausführen nicht blockierender E / A in Ruby?

8

Wenn ich sage, dass ich eine Webseite zum Parsen abrufen möchte, aber die CPU nicht blockieren soll, während die I / O stattfindet. Gibt es etwas, das der Python-Eventlet-Bibliothek entspricht?

    
Fast Fish 17.12.2010, 07:12
quelle

2 Antworten

17

Die beste HTTP-Client-Bibliothek für Ruby ist Typhoeus . Sie kann verwendet werden, um mehrere HTTP-Anfragen parallel in einem Mode blockieren. Es gibt eine blockierende und nicht blockierende Schnittstelle:

%Vor%

Eine andere Option ist em-http-request , die auf EventMachine läuft. Es hat eine vollständig nicht blockierende Schnittstelle:

%Vor%

Es gibt auch eine Schnittstelle, um viele Anfragen parallel zu stellen, ähnlich wie bei Typhoeus Hydra.

Der Nachteil von em-http-request ist, dass es an EventMachine gebunden ist. EventMachine ist ein großartiges Framework für sich, aber es ist ein Alles-oder-Nichts-Deal. Sie müssen Ihre gesamte Anwendung in einer Art "Evated / Continuation-Passing" schreiben, von der bekannt ist, dass sie Gehirnschäden verursacht. Typhoeus eignet sich viel besser für Anwendungen, die noch nicht ausgeglichen sind.

    
Theo 17.12.2010 10:20
quelle
5

Ich bin nicht sicher, was Eventlet tut, aber Ruby hat EventMachine , eine Bibliothek für nicht blockierende IO ( unter anderem ).

    
maerics 17.12.2010 07:52
quelle

Tags und Links