{"id":176920,"date":"2023-05-26T21:39:35","date_gmt":"2023-05-26T20:39:35","guid":{"rendered":"https:\/\/liora.io\/de\/?p=176920"},"modified":"2026-02-06T06:45:38","modified_gmt":"2026-02-06T05:45:38","slug":"twisted-python-das-tool-zur-erstellung-von-webapps","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/twisted-python-das-tool-zur-erstellung-von-webapps","title":{"rendered":"Twisted Python: DAS Tool zur Erstellung von WebApps"},"content":{"rendered":"<p><strong>Twisted Python: Ein Event-Driven-Framework zur Erstellung von Anwendungen und Internetservern in Python. Hier erf\u00e4hrst du alles, was du \u00fcber dieses viel genutzte Werkzeug wissen musst: Urspr\u00fcnge, Geschichte, Funktionsweise, Schulungen&#8230;<\/strong><\/p>\nAnfang der 2000er Jahre hatten die Entwickler von Netzwerk-Videospielen keine Bibliothek mit plattform\u00fcbergreifenden Programmiersprachen zur Verf\u00fcgung.\n\nZu dieser Zeit arbeitete der amerikanische Programmierer <strong>Glyph Lefkowitz<\/strong> an einem textbasierten Multiplayer-Spiel mit dem Titel Twisted Reality. Sehr schnell entwickelte sich das Projekt zu einem chaotischen Projekt. F\u00fcr jede Verbindung wurden drei Java-Threads ben\u00f6tigt.\n\nEin Thread f\u00fcr Eingaben blockierte Lesevorg\u00e4nge, ein Thread f\u00fcr Ausgaben blockierte bestimmte Schreibvorg\u00e4nge, und ein Thread f\u00fcr &#8222;Logik&#8220; schlief und wartete darauf, dass Timer ablaufen oder Ereignisse zur Warteschlange hinzugef\u00fcgt werden.\n\nWenn die Spieler durch diese virtuelle Umgebung navigierten und interagierten, gerieten die Threads in Interblocking, Caches wurden besch\u00e4digt und die blockierende Logik war nie angemessen.\n\nMit anderen Worten: Die Verwendung von <strong>Threads machte die Software kompliziert<\/strong>, fehlerhaft und sehr schwer zu erweitern. Angesichts dieser Probleme erkannte Glyph den Bedarf an einem erweiterbaren, plattform\u00fcbergreifenden und event-driven <strong>Networking-Framework.<\/strong>\n<h3>Die Geschichte von Twisted Python<\/h3>\nAuf der Suche nach L\u00f6sungen f\u00fcr die Probleme, die bei der Entwicklung seines Spiels auftraten, stie\u00df Glyph auf Python und sein &#8222;select&#8220;-Modul f\u00fcr das I\/O-Multiplexing von Flussobjekten wie Sockets oder Pipes.\n\nZu dieser Zeit gab es in Java weder die select-Schnittstelle des Betriebssystems noch eine andere asynchrone I\/O-<a href=\"https:\/\/liora.io\/de\/api\">API<\/a>. Das Paket java.nio f\u00fcr nicht-blockierende I\/O wurde 2002 mit J2SE 1.4 hinzugef\u00fcgt.\n\nSo erwies sich ein schneller Prototyp des Spiels in Python mit dem select-Modul sofort als weniger komplex und zuverl\u00e4ssiger als die threaded-Version.\n\nVon da an schrieb<strong> Glyph<\/strong> einen Client und einen Server f\u00fcr sein <strong>Python-Spiel<\/strong> mithilfe der select-API. Er wollte jedoch noch einen Schritt weiter gehen und die Netzwerkaktivit\u00e4t in Methodenaufrufe f\u00fcr Objekte im Spiel umwandeln k\u00f6nnen.\n\nEr stellte sich vor, dass man im Spiel eine E-Mail erhalten k\u00f6nnte, \u00e4hnlich wie der Mail-Daemon im NetHack-Spiel von 1987. Oder auch die M\u00f6glichkeit, dass jeder Spieler eine eigene Homepage hat.\n\nUm seine Ideen zu verwirklichen, ben\u00f6tigte Glyph Python <a href=\"https:\/\/liora.io\/de\/python-http-request-requests-alles-wichtige\">HTTP<\/a>&#8211; und IMAP-Clients und -Server, die select verwenden. Er versuchte es zun\u00e4chst mit der Medusa-Plattform, die Mitte der 90er Jahre entwickelt wurde, um Netzwerkserver in Python zu schreiben, die auf dem &#8222;asyncore&#8220;-Modul basieren.\n\nDieses Modul ist ein Socket-Manager, mit dem man einen Verteiler und eine R\u00fcckrufschnittstelle \u00fcber die select-API des Betriebssystems bauen kann. Medusa hatte jedoch zwei Schwachpunkte.\n\nZum einen war die Einstellung des Projekts f\u00fcr 2001 geplant. Zweitens ist das Asyncore-Modul ein so d\u00fcnner Wrapper um die Sockets, dass Anwendungsprogrammierer die Sockets immer noch direkt manipulieren m\u00fcssen.\n\nDie Portabilit\u00e4t liegt also immer noch in der Verantwortung des Programmierers. Au\u00dferdem war die Unterst\u00fctzung von asyncore durch Windows noch fehlerhaft, und Glyph wusste, dass es einen <strong>GUI-Client<\/strong> auf Windows ausf\u00fchren wollte.\n\nAngesichts der Aussicht, selbst eine Vernetzungsplattform zu implementieren, erkannte Glyph, dass <strong>Twisted Reality<\/strong> die T\u00fcr zu einem Problem ge\u00f6ffnet hatte, das genauso interessant war wie das Spiel selbst. Im Laufe der Zeit mutierte sein Videospielprojekt zu einer Vernetzungsplattform: Twisted.\n\n?Auch interessant:\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"268\"><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python\"><a href=\"https:\/\/liora.io\/de\/python\" target=\"_blank\" rel=\"noopener\">Python<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Wordcloud Python&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/wordcloud-python\"><a href=\"https:\/\/liora.io\/de\/wordcloud-python\" target=\"_blank\" rel=\"noopener\">Wordcloud Python<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python oder R ?&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python-oder-r\"><a href=\"https:\/\/liora.io\/de\/python-oder-r\" target=\"_blank\" rel=\"noopener\">Python oder R ?<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python f\u00fcr Dummies Teil 2&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python-fuer-dummies-teil-2\"><a href=\"https:\/\/liora.io\/de\/python-fuer-dummies-teil-2\" target=\"_blank\" rel=\"noopener\">Python f\u00fcr Dummies Teil 2<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python Schulung&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python-schulung\"><a href=\"https:\/\/liora.io\/de\/python-schulung\" target=\"_blank\" rel=\"noopener\">Python Schulung<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Was ist Twisted Python ?<\/h3>\nTwisted ist eine &#8222;event-driven&#8220; Netzwerkmaschine, die in der Programmiersprache<strong> Python<\/strong> geschrieben ist. Es wird insbesondere zur Erstellung von ssh-, Proxy-, SMTP- und HTTP-Servern verwendet.\n\nDas Tool behebt mehrere Schw\u00e4chen der bisherigen Python-Netzwerkplattformen. Es verwendet Even-Driven-Programmierung anstelle von <strong>Multi-Threaded-Programmierung<\/strong>. Es ist auch ein plattform\u00fcbergreifendes Werkzeug, das eine einheitliche Schnittstelle f\u00fcr die von den wichtigsten Betriebssystemen ausgesetzten Ereignisbenachrichtigungssysteme bietet.\n\nDar\u00fcber hinaus bietet Twisted direkt Client- und Serverimplementierungen f\u00fcr viele Protokolle der Anwendungs- und Transportschicht, darunter TCP, UDP, SSL\/TLS, HTTP, IMAP, SSH, IRC und FTP.\n\nAu\u00dferdem gibt es Dienstprogramme, mit denen du Anwendungen einfach von der Eingabeaufforderung aus konfigurieren und bereitstellen kannst. Daher ist es f\u00fcr Entwickler sofort n\u00fctzlich.\n\nEs ist auch ein <strong>RFC-konformes (Request for Comments)<\/strong> Werkzeug, das seine Konformit\u00e4t durch eine solide Testsuite beweist. Es ist skalierbar und vereinfacht die Verwendung mehrerer Netzwerkprotokolle.\n\n?Auch interessant:\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"268\"><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Was ist Scala und wieso ist Python besser&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/scala-was-ist-diese-programmiersprache-und-wieso-ist-python-besser\"><a href=\"https:\/\/liora.io\/de\/scala-was-ist-diese-programmiersprache-und-wieso-ist-python-besser\" target=\"_blank\" rel=\"noopener\">Was ist Scala und wieso ist Python besser<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Top der nativen Python Funktionen&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/top-10-der-nativen-python-funktionen\"><a href=\"https:\/\/liora.io\/de\/top-10-der-nativen-python-funktionen\" target=\"_blank\" rel=\"noopener\">Top der nativen Python Funktionen<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Imageio&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/imageio-die-python-bibliothek-fuer-bilddaten\"><a href=\"https:\/\/liora.io\/de\/imageio-die-python-bibliothek-fuer-bilddaten\" target=\"_blank\" rel=\"noopener\">Imageio<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python f\u00fcr Dummies Teil 1&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python-programm-fuer-dummies-teil-1\"><a href=\"https:\/\/liora.io\/de\/python-programm-fuer-dummies-teil-1\" target=\"_blank\" rel=\"noopener\">Python f\u00fcr Dummies Teil 1<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Python programmieren lernen&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/python-programmieren\"><a href=\"https:\/\/liora.io\/de\/python-programmieren\" target=\"_blank\" rel=\"noopener\">Python programmieren lernen<\/a><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Data Cleaning Python&quot;}\" data-sheets-hyperlink=\"https:\/\/liora.io\/de\/data-cleaning-python-programmierung-teil-3\"><a href=\"https:\/\/liora.io\/de\/data-cleaning-python-programmierung-teil-3\" target=\"_blank\" rel=\"noopener\">Data Cleaning Python<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>\nfrom twisted.web import server, resource\nfrom twisted.internet import reactor, endpoints\nclass Counter(resource.Resource):\n    isLeaf = True\n    numberRequests = 0\n    def render_GET(self, request):\n        self.numberRequests += 1\n        request.setHeader(b\"content-type\", b\"text\/plain\")\n        content = u\"I am request #{}n\".format(self.numberRequests)\n        return content.encode(\"ascii\")\nendpoints.serverFromString(reactor, \"tcp:8080\").listen(server.Site(Counter()))\nreactor.run()\n                <\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Python Weiterbildung<\/a><\/div><\/div>\n\n<h3>Was ist Event-Driven Programming?<\/h3>\nDas <strong>Hauptmerkmal von Twisted<\/strong> ist, dass es sich um eine event-driven (ereignisgesteuerte) Vernetzungsmaschine handelt.\n\nDieses Programmierparadigma besteht darin, dass der Programmfluss durch \u00e4u\u00dfere Ereignisse bestimmt wird.\n\nEs zeichnet sich durch eine Ereignisschleife und die Verwendung von Erinnerungen aus, um Aktionen auszul\u00f6sen, wenn Ereignisse eintreten. Weitere g\u00e4ngige Paradigmen sind die synchrone Ein-Thread-Programmierung und die Multi-Thread-Programmierung.\n\nEin synchrones<strong> Single-Thread-Programm<\/strong> f\u00fchrt die Aufgaben hintereinander aus. Wenn eine Aufgabe f\u00fcr einen <strong>Moment bei I\/O (Input\/Output)<\/strong> h\u00e4ngen bleibt, m\u00fcssen alle anderen Aufgaben warten, bis diese Aufgabe beendet ist, um ihrerseits ausgef\u00fchrt zu werden.\n\nDiese festgelegte Reihenfolge und die serielle Verarbeitung vereinfachen das Denken, aber das Programm ist unn\u00f6tig langsam, wenn die Aufgaben nicht voneinander abh\u00e4ngen. Aus diesem Grund m\u00fcssen sie trotzdem aufeinander warten.\n\nEin <strong>Multithread-Programm<\/strong> f\u00fchrt die Aufgaben in separaten Kontroll-Threads aus. Diese Threads werden vom Betriebssystem verwaltet und k\u00f6nnen gleichzeitig auf mehreren Prozessoren oder verschachtelt auf einem einzelnen Prozessor ausgef\u00fchrt werden.\n\nDadurch k\u00f6nnen einzelne Threads auch dann vorankommen, wenn andere Threads Ressourcen blockieren. Im Allgemeinen spart dieser Ansatz im Vergleich zu einem analogen synchronen Programm Zeit.\n\nEs muss jedoch Code geschrieben werden, um gemeinsam genutzte Ressourcen zu sch\u00fctzen, die von mehreren Threads gleichzeitig genutzt werden k\u00f6nnen.\n\nMultithread-Programme erfordern komplexere \u00dcberlegungen, da es zwingend notwendig ist, sich um die Sicherheit des Threads durch Prozessserialisierung, Reentrance, thread-lokale Speicherung oder andere Mechanismen zu k\u00fcmmern. Bei einer schlechten Implementierung k\u00f6nnen subtile Fehler auftreten.\n\nSchlie\u00dflich verschr\u00e4nkt ein event-driven Programm die Ausf\u00fchrung von Aufgaben in einem einzigen Kontroll-Thread. Bei I\/O oder anderen anspruchsvollen Vorg\u00e4ngen wird ein R\u00fcckruf mit einer Ereignisschleife aufgezeichnet und die Ausf\u00fchrung wird fortgesetzt, w\u00e4hrend der Vorgang beendet wird.\n\nDer R\u00fcckruf beschreibt, wie man sich um ein Ereignis k\u00fcmmert, nachdem es abgeschlossen wurde. Die Ereignisschleife fragt die Ereignisse ab und verteilt sie auf die Erinnerungen, w\u00e4hrend sie eintreffen.\n\nDies erm\u00f6glicht es dem Programm, Fortschritte zu machen, wann immer es kann, ohne zus\u00e4tzliche Threads verwenden zu m\u00fcssen. Ereignisgesteuerte Programme vereinfachen das Denken im Vergleich zu <strong>Multithread-Programmen<\/strong>, da der Programmierer sich keine Gedanken \u00fcber die Sicherheit des Threads machen muss.\n\nDieses Modell ist normalerweise die beste Wahl, wenn es viele unabh\u00e4ngige Aufgaben gibt, die nicht miteinander kommunizieren oder aufeinander warten m\u00fcssen, oder wenn einige dieser Aufgaben beim Warten auf Ereignisse h\u00e4ngen bleiben.\n\nEs ist auch eine gute Wahl, wenn eine Anwendung ver\u00e4nderliche Daten zwischen Aufgaben austauschen muss, da keine Synchronisierung stattfinden muss. Vernetzungsanwendungen haben sehr oft diese Eigenschaften, was sie besonders geeignet f\u00fcr event-driven Programmierung macht.\n\nZusammenfassend l\u00e4sst sich sagen, dass Twisted die Parallelit\u00e4t der Multithread-Programmierung kombiniert mit der einfachen Denkweise der Singlethread-Programmierung bietet.\n<h3>Was ist der Twisted-Reaktor?<\/h3>\nDas Konzept des Reaktors oder Reaktors von Twisted Python besteht darin, Ereignisse von mehreren Quellen an ihre Empf\u00e4nger innerhalb einer <strong>Single-Thread-Umgebung<\/strong> zu verteilen.\n\nDie Ereignisschleife des Reaktors ist das Herzst\u00fcck der Funktionsweise von Twisted.\n\nDer Reaktor kennt das Netzwerk, das Dateisystem und die Timer-Ereignisse. Er wartet auf Ereignisse und \u00fcbernimmt sie dann, erm\u00f6glicht die Abstraktion von plattformspezifischem Verhalten und pr\u00e4sentiert Schnittstellen, um die Reaktion auf Ereignisse \u00fcberall im Netzwerk-Stack zu vereinfachen.\n\nEin Reaktor, der auf der <strong>Poll-API<\/strong> basiert, wird standardm\u00e4\u00dfig auf allen Plattformen angeboten. Andere plattformspezifische APIs f\u00fcr hochvolumiges Multiplexing werden ebenfalls unterst\u00fctzt.\n\nBeispiele hierf\u00fcr sind der<strong> KQueue-Reaktor,<\/strong> der auf dem kqueue-Mechanismus von FreeBSD basiert, der Reaktor, der auf der epoll-Schnittstelle basiert, oder ein IOCP-Reaktor, der auf den I\/O-Komplettierungsports von Windows basiert.\n\nBeispiele f\u00fcr von der Abfrage der Implementierung abh\u00e4ngige Details, die von Twisted unterst\u00fctzt werden, sind Netzwerk- und Dateisystemgrenzen, das Pufferverhalten, die Methode zur Erkennung einer verlorenen Verbindung oder die im Fehlerfall zur\u00fcckgegebenen Werte.\n\nDie Implementierung des Twisted-Reaktors unterst\u00fctzt auch die Verwendung der zugrunde liegenden nicht-blockierenden APIs. Die Programmiersprache Python stellt die <strong>IOCP-API<\/strong> nicht zur Verf\u00fcgung, weshalb Twisted seine eigene Implementierung beibeh\u00e4lt.\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"686\" height=\"328\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/05\/twisted-reactor.jpg\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/05\/twisted-reactor.jpg 686w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/05\/twisted-reactor-300x143.jpg 300w\" sizes=\"(max-width: 686px) 100vw, 686px\"><figcaption><\/figcaption><\/figure>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Twisted lernen<\/a><\/div><\/div>\n\n<h3>Wie kann ich mit Twisted Python testen?<\/h3>\nTwisted bietet eine komplette Testsuite, die mit dem Befehl &#8222;tox&#8220; ausgef\u00fchrt werden kann. Zum Beispiel werden mit tox &#8211; 1 alle Testumgebungen angezeigt, tox -e nocov f\u00fchrt alle Tests ohne Deckungen durch, tox -e withcov startet die Tests mit Deckungen und tox -e alldeps-withcov-posix installiert alle Abh\u00e4ngigkeiten und f\u00fchrt die Tests mit Deckungen auf der POSIX-Plattform durch.\n\nEs ist m\u00f6glich, die Testsuite auf den verschiedenen Reaktoren mit der Umgebungsvariable TWISTED_REACTOR auszuf\u00fchren:&#8220; $ env TWISTED_REACTOR=epoll tox -e alldeps-withcov-posix&#8220;.\n\nEinige dieser Tests k\u00f6nnen fehlschlagen, wenn die f\u00fcr ein bestimmtes Subsystem erforderlichen Abh\u00e4ngigkeiten nicht installiert sind, wenn eine Firewall bestimmte Prots blockiert oder wenn sie als root ausgef\u00fchrt werden.\n\nAu\u00dferdem kann \u00fcberpr\u00fcft werden, ob der Code den Twisted-Standards entspricht. Mit dem Befehl &#8222;tox -e lint&#8220; wird pre-commit ausgef\u00fchrt, und mit dem Befehl &#8222;tox -e mypy&#8220; wird der <strong>MyPy-Checker<\/strong> ausgef\u00fchrt, um Tippfehler im statischen Code zu erkennen.\n<h3>Wie installiere ich Twisted?<\/h3>\nBevor du mit der Entwicklung von Anwendungen mit Twisted beginnst, musst du es herunterladen und mit all seinen Abh\u00e4ngigkeiten installieren.\n\nF\u00fcr eine Installation unter Linux tippe den Befehl &#8222;apt-get install python-twisted&#8220; auf einem dpkg-basierten System oder &#8222;yum install python-twisted&#8220; auf einem rpm-basierten System ein.\n\nF\u00fcr eine Installation unter Windows findest du<strong> MSI- und EXE-Installationsprogramme<\/strong> in 32-Bit- und 64-Bit-Versionen. Wenn du dir nicht sicher bist, welche Version du ben\u00f6tigst, funktioniert das 32-Bit MSI immer. Lade den Twisted-Installer und den zope.interface-Installer von der Homepage herunter und starte sie.\n\nEs ist auch m\u00f6glich, optionale Pakete und Abh\u00e4ngigkeiten zu installieren, um zus\u00e4tzliche Funktionen von Twisted zu nutzen. Ein <strong>Ubuntu-PPA<\/strong> ist auf der Launchpad-Seite des Twisted-dev-Teams verf\u00fcgbar, mit Paketen f\u00fcr die neueste Twisted-Version auf allen aktiven Ubuntu-Versionen. F\u00fcr SSL- oder SSH-Funktionalit\u00e4t sind die pyOpenSSL- und PyCrypto-Pakete als python-openssl und python-crypto verf\u00fcgbar.\n<h3>Die Community von Twisted Python<\/h3>\nWenn du bei einem Projekt Rat brauchst, kannst du die Twisted-Community um Hilfe bitten. Die Mitwirkenden sind immer bereit, Unterst\u00fctzung zu leisten.\n\nEs gibt zwei Hauptmailinglisten. Die twisted-python-Liste ist eine allgemeine Diskussionsliste f\u00fcr Entwicklungsfragen und wird auch f\u00fcr Ank\u00fcndigungen im Zusammenhang mit Twisted und Projekten, die es verwenden, genutzt.\n\nDiese Liste wird auch genutzt, um Sprints zu organisieren, Tickets zu diskutieren, Feedback zu ihren Projekten einzuholen und die Wartung und Infrastruktur des Projekts zu besprechen. Die Liste twisted-web ist f\u00fcr Diskussionen \u00fcber Webtechnologien im Zusammenhang mit Twisted gedacht.\n\nDie<strong> IRC-Kan\u00e4le #twisted und #twisted.web<\/strong> sind auch \u00fcber das Freenode-Netzwerk zug\u00e4nglich. Diese Kan\u00e4le sind sehr aktiv, aber es ist m\u00f6glich, eine Nachricht an die entsprechende Liste zu senden, wenn du nicht sofort eine Antwort erh\u00e4ltst.\n\nViele Fragen und Antworten im Zusammenhang mit Twisted finden sich auch auf Stack Overflow, und die Entwickler ver\u00f6ffentlichen Sprintberichte und Relax-Ank\u00fcndigungen im offiziellen Blog. Die pers\u00f6nlichen Blogs der Entwickler werden auf<strong> Planet Twisted<\/strong> zusammengefasst.\n<h3>Fazit<\/h3>\nTwisted war lange Zeit eine Referenz f\u00fcr die Erstellung von Servern oder Internetanwendungen in Python. Allerdings hat dieses<a href=\"https:\/\/liora.io\/de\/open-source-definition\"> Open-Source-Tool<\/a> Schwierigkeiten, sich an die Entwicklungen des Internets und seiner Nutzung anzupassen. Dennoch machen die zahlreichen Erweiterungen es zu einem flexiblen und erweiterbaren Werkzeug.\n\nUm zu lernen, wie man Twisted und die <a href=\"https:\/\/liora.io\/de\/python-web-scraping-scrapy-alles-ueber-das-tool\">Programmiersprache Python<\/a> beherrscht, kannst du Liora w\u00e4hlen. Alle unsere Kurse beinhalten ein Modul, das dieser Programmiersprache gewidmet ist.\n\nUnsere verschiedenen Kurse vermitteln dir die F\u00e4higkeiten, die du brauchst, um als <strong>Data Analyst, Data Scientist, Data Engineer, Machine Learning Engineer oder Data Product Manager<\/strong> zu arbeiten.\n\nUnsere Programme k\u00f6nnen vollst\u00e4ndig als Fernstudium absolviert werden und unsere staatlich anerkannte Organisation ist f\u00fcr den Bildungsgutschein zugelassen. Entdecke Liora!\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Liora Weiterbildungen<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Twisted Python: Ein Event-Driven-Framework zur Erstellung von Anwendungen und Internetservern in Python. Hier erf\u00e4hrst du alles, was du \u00fcber dieses viel genutzte Werkzeug wissen musst: Urspr\u00fcnge, Geschichte, Funktionsweise, Schulungen&#8230; Anfang der 2000er Jahre hatten die Entwickler von Netzwerk-Videospielen keine Bibliothek mit plattform\u00fcbergreifenden Programmiersprachen zur Verf\u00fcgung. Zu dieser Zeit arbeitete der amerikanische Programmierer Glyph Lefkowitz an [&hellip;]<\/p>\n","protected":false},"author":76,"featured_media":176921,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2476],"class_list":["post-176920","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/176920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=176920"}],"version-history":[{"count":1,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/176920\/revisions"}],"predecessor-version":[{"id":217514,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/176920\/revisions\/217514"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/176921"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=176920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=176920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}