Ist etwas gut verdreht? [geschlossen]

7

Ich höre immer wieder diesen Hype über Twisted für Python, aber ich finde es einfach verwirrend. Was ist Ihrer Meinung nach einfacher zu benutzen? Einfache Sockets oder Implementieren verdreht?

    
Jake 04.06.2010, 13:59
quelle

4 Antworten

26

Ich stehe zu dem, was ich in Python in Kürze (2. Ausgabe S. 540):

  

Twisted beinhaltet leistungsstarke, High-Level   Komponenten wie Webserver, Benutzer   Authentifizierungssysteme, Mail-Server   und Kunden, Instant Messaging, SSH   Clients und Server, ein DNS-Server und   Kunde, und so weiter, sowie die   untergeordnete Infrastruktur, auf der   all diese High-Level-Komponenten sind   gebaut. Jede Komponente ist hoch   skalierbar und leicht anpassbar, und   Alle sind integriert integriert   glatt. Es ist eine Hommage an die Macht   von Python und dem Einfallsreichtum von   Twisted-Entwickler, die so viel können   innerhalb von zwei Megabyte durchgeführt werden   Wert des Downloads.

Wenn man fragt, ob dieses unglaublich reichhaltige und mächtige Framework "einfacher zu benutzen" ist als "einfache Sockets", ist es ein bisschen wie zu fragen, ob ein Auto "einfacher zu benutzen" ist als eine Schraube: Was für ein seltsam Frage!

Autos sind gebaut mit Schrauben (unter anderem), und kann nicht ganz so "einfach zu bedienen" sein - nur weil eine Schraube so wenig tut, macht ein Auto so viel.

Aber wenn Sie von A nach B kommen wollen (und möglicherweise Passagiere, Gepäck, Haustiere, ...), hilft eine Schraube nicht viel (es sei denn, Sie bauen im Grunde ein Auto von Grund auf ;-)) .

Natürlich sind Autos nicht der einzige Weg, um von A nach B zu kommen, genauso wie verdreht ist nicht die einzige Möglichkeit, netzwerkzentrierte Systeme in Python zu bauen. Ein Pferd und Buggy (wie asyncore ) ist malerisch und lustig, wenn auch weniger praktisch ; ein Hochgeschwindigkeitszug (wie zB Tornado) ist vielleicht einfacher zu benutzen und mindestens genauso schnell, wenn auch viel weniger flexibel; und für verschiedene spezialisierte Zwecke können Sie alle Arten von anderen Transportmitteln bevorzugen, von Einrädern bis zu Kreuzfahrtschiffen (wie in Python und für Netzwerke, alle Arten von anderen Paketen, von paramiko zu dnspython ) - alle von ihnen werden Schrauben als Teil ihrer Komponenten enthalten (wie alle) wird Sockets als Teil der Art, wie sie gebaut werden, enthalten, wird keiner so einfach zu bedienen sein wie "einfache Sockets", jeder (in seinem eigenen Anwendungsbereich) wird viel mehr für Sie tun als "einfache Sockets" auf ihrem Eigene könnte möglicherweise.

Twisted ist eine ausgezeichnete Wahl in einer Vielzahl von Fällen, oft am besten, wenn Sie mehrere Aspekte der Funktionalität integrieren und / oder ein Protokoll implementieren müssen, für das es keine vollständig gepackte Lösung gibt. "Einfache Sockets" sind es nicht - sie sind nur eine Low-Level-Komponente, aus der höhere Funktionalität, höhere Ebenen, gebaut werden, und es gibt selten einen guten Grund (außer natürlich zu lernen), "eigene" zu rollen "Komponenten auf höherer Ebene, die" von Grund auf neu "auf Steckdosen aufgebaut sind (anstatt mächtige, gut gebaute bestehende zu wählen) - genau so, wie Sie es selten tun würden, Ihren eigenen Computer aus Transistoren, Widerständen, Kondensatoren usw. zu bauen. anstatt geeignete integrierte Schaltkreise auszuwählen ;-).

    
Alex Martelli 04.06.2010, 15:29
quelle
4

Twisted ist ein Parallelitätsrahmen. Es ermöglicht Ihnen, mehrere Aufgaben in einer Anwendung zu jonglieren, ohne Threads / Prozesse zu verwenden. Dies geschieht mit einem ereignisgesteuerten asynchronen System und eignet sich besonders gut für Netzwerkanwendungen. Asynchroner Code tendiert im Allgemeinen dazu, ein wenig "anders" von normalen Dingen zu sein, da der Fluss nicht explizit ist und Dinge auf der Grundlage von externen Ereignissen geschehen. Das kann verwirrend sein, aber es funktioniert. Twisted ist wohl die ausgereifteste Python Async Concurrency Library. Wenn Sie also vorhaben, dies zu tun, ist twisted eine gute Sache, auf die Sie wetten können.

"Einfache Sockets", wie Sie sie nennen, sind Kommunikationsprimitive und nicht wirklich vergleichbar mit twisted. Was versuchst du zu tun?

    
Noufal Ibrahim 04.06.2010 14:11
quelle
3

Ich würde sagen, es ist gut. Schauen Sie sich einfach diese Seite der Projekte an, die verdrehte verwendet.

    
Dirk Eddelbuettel 04.06.2010 14:03
quelle
0

Twisted wurde erstmals im Jahr 2002 veröffentlicht und ist seither erheblich aufgebläht; (Dies ist ein heikles Thema und viele Leute würden argumentieren, dass dies in einem Rahmen gut und notwendig ist) - Für jemanden, der sich dem Projekt jetzt nähert, kann es jedoch etwas entmutigend sein. Es gibt jedoch Optionen, wenn Sie auf asynchrone Frameworks drängen. Ich fand diesen Blog interessant: Ссылка . Abgesehen von den Benchmarks sind die Codebeispiele allein zum Vergleich sehr interessant.

    
dagoof 04.06.2010 15:36
quelle

Tags und Links