© photocase.com
Python und Twisted zur Netzwerkprogrammierung
Der richtige Dreh
von Markus Franz
Erschienen im Linux-Magazin
2006/01
Das Programmieren netzwerkfähiger Anwendungen fällt mit dem Python-Framework Twisted leicht. Von Mail bis zum Chat beherrscht es die wichtigsten Internetprotokolle, auf Wunsch sogar verschlüsselt. Dieser Artikel gibt einen Überblick und demonstriert die Fähigkeiten an einem eigenen Webserver.
Viele Programmierer stehen irgendwann vor der Aufgabe, die Fähigkeit zur Netzwerkkommunikation in ihre Software zu integrieren. Soll sie nur den Inhalt einer Webseite verarbeiten, geht das noch recht einfach. Komplexere Funktionen wie umfassende E-Mail-Fähigkeiten oder ein kompletter Webserver erfordern sehr viel mehr Aufwand.
Obwohl die Python-Standardbibliothek für viele Bereiche des täglichen Programmiererlebens schon passende Module bereitstellt (im Python-Jargon: Batteries included), setzen spezielle Anwendungen externe Pakete voraus. Twisted [1] ist eine gut strukturierte und leistungsfähige Sammlung von Modulen, um Netzwerkfunktionen aller Art in Python-Programme einzuflechten.
Wer etwa einen E-Mail-Client mit Unterstützung diverser Protokolle (POP 3, SMTP, IMAP) schreiben will, dem erleichtert das Twisted-Framework die Arbeit erheblich, da er nicht bei null beginnen muss: Twisted Mail bringt bereits alle wesentlichen Mailprotokolle mit. Neben diesen enthält Twisted auch für SSH, SFTP, HTTP (auch HTTP/1.1), DNS, NNTP und Jabber fertige Module. Wer dennoch das Rad neu erfinden möchte - zum Beispiel bei der Implementierung eigener Protokolle - findet in den Twisted-Modulen »twisted.cred« und »twisted.spread« geeignete Helfer.
Netzwerk asynchron
Grundsätzlich handelt es sich bei Twisted um ein asynchrones Netzwerk-Framework. Im Gegensatz zu anderen Bibliotheken blockieren die entsprechenden Funktionen beim Aufruf also nicht. Eine Anwendung arbeitet einfach weiter, bis sie die Nachricht erhält, dass die gewünschten Daten bereitstehen. Zwar wäre dies auch mit Pythons Standardbibliothek möglich, denn das Modul »asyncore« stellt grundlegende Funktionen zum Umschalten zwischen mehreren I/O-Channels innerhalb eines Thread bereit. Aber Twisted setzt dieses Konzept in seinen Protokollen, Schnittstellen und Komponenten auf einer höheren Ebene um. Damit lassen sich Netzwerkanwendungen programmieren, die auf zusätzliche Prozesse und Threads verzichten und trotzdem mit mehreren I/O-Channels gleichzeitig umgehen.
Sehr modular
Um mit Twisted die eigene Software netzwerkfähig zu machen, muss der Programmierer zunächst herausfinden, welcher Teil des Framework ihm hilft. Die Entwickler haben Twisted beim Übergang von Version 1 zu 2 in mehrere Teilprojekte aufgeteilt, um die Übersichtlichkeit zu erhöhen. Die wichtigsten führt Tabelle 1 auf, eine komplette Liste findet sich unter [2].
Twisted setzt das Modul Zope Interface voraus, das Interfaces implementiert, die im Sprachkern von Python fehlen. Wer nur ein einziges Projekt, zum Beispiel Twisted Web oder Twisted Mail, benutzen möchte, braucht nur das jeweilige Modul von der Projektseite herunterzuladen und zu installieren. Alternativ enthält Twisted Sumo [3] alle (stabilen) Module inklusive Zope Interface.
Die Installation erledigt nach dem Auspacken der Befehl »python setup.py install«. Ist Zope Interface nicht installiert, bricht die Twisted-Installation mit einer Fehlermeldung ab.
Das Modul »twisted.cred« kümmert sich um die Authentifizierung bei der Client-Server-Kommunikation. Es erlaubt vielen Netzwerkprotokollen sich mit einem System zu verbinden, sich ihm gegenüber zu authentifizieren und dann Daten auszutauschen. Zum Beispiel übergibt die Unterstützung von POP 3 in Twisted eine Kombination aus Benutzername und Kennwort, um die angegebene Mailbox für den E-Mail-Account zu öffnen. Wichtig ist hierbei der so genannte Perspective Broker, der den Zugriff auf entfernte Objekte (Remote Objects) bereitstellt und Kopieren, Referenzierung und Caching dieser Objekte implementiert.
| Whitepaper |
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|