Hallo, Thomas,
On Fri, Jul 14, 2006 at 10:16:55PM +0200, Thomas Guettler wrote:
On Thu, Jul 13, 2006 at 01:12:34PM +0200, Frank Benkstein wrote:
Der CCC Dresden lädt ein:
- Themenabend Python und Twisted * * *
Später soll noch kurz das Programmierframework Twisted[2] vorgestellt werden, das die Möglichkeit bietet, in Python asynchrone Programmierung ohne Threads (eventbasiert) zu betreiben, und damit hohe Performance erreicht. Twisted bietet aber vorallem fertige Bibliotheken zu Netzwerkprogrammierung an, HTTP über SMTP, IMAP, POP, bis hin zum eigenen SSH-Server an.
ich bin großer Freund der Programmiersprache Python, aber mit Twisted konnte ich mich noch nicht anfreunden. Hier ein paar Fragen, da ich leider nicht zum Themenabend kommen kann.
Twisted lauscht doch an einem oder mehreren Filedescriptoren/Sockets (select, bzw. poll) und verarbeitet dann die Descriptoren über die Daten gerade angekommen sind. Arbeitet dabei nur eine Instanz des Pythoninterpreters (ein Prozess)? Wenn dem so wäre, dann würde doch das Abarbeiten der anderen Anfragen stehenbleiben, falls mal das bearbeiten eines Events lange dauert.
Threads sind dafür keine gute Lösung, da aufgrund des GIL (Global Interpreter Locks) wirkliche Paralallität nicht möglich ist.
Oder unterstüzt Twisted auch ein Prefork Workerprozess Modell, wie z.B. SCGI (ähnlich aber einfacher als FastCGI)?
Twisted arbeitet im Allgemeinen ohne Forks oder Threads (obwohl das möglich ist). Jede Funktion muss daher die Kontrolle so schnell wie möglich wieder an die Hauptschleife zurückgeben. Ist in einer Funktion das zurückzugebene Ergebnis aber nicht sofort da, kann die Funktion auch ein Deferred-Objekt zurückgeben, quasi ein Versprechen, dass es das Ergebnis später noch geben wird. Um mit dem Ergebnis dann umzugehen, muss sich eine Funktion als Callback (oder Errback, um einen Fehler zu fangen) bei dem Deferred-Objekt registrieren. Dies war für mich, als ich es zum ersten Mal gelesen habe, ein ziemlich verwirrendes Konzept und ich glaube, dass es den meisten ähnlich gehen wird, deshalb werde ich beim Themenabend darauf auch besonders eingehen. Das Deferred-Konzept ist in der Twisted-Dokumentation recht gut beschrieben, allerdings muss man die Texte wohl mehrmals lesen und nebenher selber etwas dazu programmieren um es richtig zu verstehen. :-)
Also bis dann Frank Benkstein.