Asynchrone IO Bibliothek mit Enhanced Generators (PEP 342)
Verfasst: Donnerstag 27. Dezember 2012, 22:51
Hallo,
Da ich meine Grooveshark API auf asynchrone Kommunikation umstellen wollte, um eine grafische Oberfläche dafür schreiben zu können, kam mir folgende Idee. Ich weiß nicht, ob es das schon gibt (im Internet habe ich zumindest nichts entsprechendes gefunden - aber vielleicht habe ich auch nicht nach dem richtigen gesucht). Und zwar fände ich eine Bibliotek schön, mit der man plattformübergreifend asynchrone Kommunikation betreiben kann, dabei soll es natürlich auch möglich sein, dass sich verschiedene GUI Toolkits verwenden lassen und somit eine Oberfläche in zum Beispiel in GTK oder auch QT geschrieben werden kann. Twisted geht da ja schon einen guten Weg, mit den verschiedenen Reaktoren für GTK, QT und verschiedene andere Plattformen und Toolkits. Jedoch bin ich dann über PEP342 gestolpert und finde die Idee irgendwie sehr gut, das nicht über Callbacks oder ähnliches zu machen, sondern das Ganze wie ein sequenzielles Programm schreiben zu können. Dazu dann noch eine Prise der Streams von Tornado und folgendes wäre möglich:
Besonders gut daran wäre, dass sich das Ganze (vor allem das letzte Beispiel) auf synchronen Betrieb umstellen ließe. Aus einem asynchronen yield urlopen könnte also auch schnell ein synchrones werden, was im Fall meiner Grooveshark API den Vorteil hätte, das ich ein einfaches Kommandozeilen Interface schreiben könnte, wobei halt gewartet wird, bis die API fertig abgefragt wurde.
Bevor ich jetzt anfange da massig Zeit zu investieren... Was haltet ihr davon oder gibt es schon so etwas?
Ich habe schon mal angefangen da schnell was zusammen zu klicken, ist noch nicht wirklich brauchbar und auch nicht gut programmiert, halt quick & dirty - sehr langsam, sobald ein Programm auf dem Stream aufsetzt: https://github.com/koehlma/lightasync
Viele Grüße
Maxi
Da ich meine Grooveshark API auf asynchrone Kommunikation umstellen wollte, um eine grafische Oberfläche dafür schreiben zu können, kam mir folgende Idee. Ich weiß nicht, ob es das schon gibt (im Internet habe ich zumindest nichts entsprechendes gefunden - aber vielleicht habe ich auch nicht nach dem richtigen gesucht). Und zwar fände ich eine Bibliotek schön, mit der man plattformübergreifend asynchrone Kommunikation betreiben kann, dabei soll es natürlich auch möglich sein, dass sich verschiedene GUI Toolkits verwenden lassen und somit eine Oberfläche in zum Beispiel in GTK oder auch QT geschrieben werden kann. Twisted geht da ja schon einen guten Weg, mit den verschiedenen Reaktoren für GTK, QT und verschiedene andere Plattformen und Toolkits. Jedoch bin ich dann über PEP342 gestolpert und finde die Idee irgendwie sehr gut, das nicht über Callbacks oder ähnliches zu machen, sondern das Ganze wie ein sequenzielles Programm schreiben zu können. Dazu dann noch eine Prise der Streams von Tornado und folgendes wäre möglich:
Code: Alles auswählen
@asynchronous
def examples():
conenction, address = yield stream.accept()
result = yield stream.read_until('protocol delimiter')
response = yield urlopen('http://www.example.com/')
Bevor ich jetzt anfange da massig Zeit zu investieren... Was haltet ihr davon oder gibt es schon so etwas?
Ich habe schon mal angefangen da schnell was zusammen zu klicken, ist noch nicht wirklich brauchbar und auch nicht gut programmiert, halt quick & dirty - sehr langsam, sobald ein Programm auf dem Stream aufsetzt: https://github.com/koehlma/lightasync
Viele Grüße
Maxi