Frage

Viele Python-Bibliotheken, auch kürzlich geschriebene, verwenden httplib2 oder die Socket-Schnittstelle Netzwerkaufgaben auszuführen.

Das ist offensichtlich leichter zu kodieren auf als Verdrehte aufgrund ihrer blockierenden Natur, aber ich denke, dies ist ein Nachteil ist, wenn sie mit anderem Code zu integrieren, insbesondere GUI ein. Wenn Sie die Skalierbarkeit, Parallelität oder GUI-Integration wollen, während Multithreading zu vermeiden, Verdreht ist dann eine natürliche Wahl.

So würde ich in Meinungen in diesen Angelegenheiten interessieren:

  1. Sollte neue Netzwerk-Code (mit Ausnahme von kleinen Kommandozeilen-Tool) mit Twisted-geschrieben werden?
  2. Möchten Sie Verdreht, http2lib oder Socket-Code in einem Projekt mischen?
  3. Ist Verdreht pythonic für die meisten Bibliotheken (es komplexer als Alternativen ist, stellt eine Abhängigkeit zu einem Nicht-Standard-Paket ...)?

Edit: Bitte lassen Sie mich Phrase dies auf eine andere Weise. Fühlen Sie sich das Schreiben neuer Code-Bibliothek mit Verdreht eine Barriere zu seiner Annahme hinzufügen kann? Twisted hat offensichtliche Vorteile (vor allem Portabilität und Skalierbarkeit von gimel angegeben), aber die Tatsache, dass es keinen Kern Python-Bibliothek ist, kann von einigen als Nachteil angesehen werden.

War es hilfreich?

Lösung

  1. Sollte neuer Netzwerk-Code (mit Ausnahme von kleinen Kommandozeilen-Tool) mit Twisted-geschrieben werden?
    • Vielleicht. Es hängt wirklich davon. Manchmal ist es nur leicht genug, um die blockierende Aufrufe in ihrem eigenen Thread zu wickeln. Twisted ist gut für großen Netzwerk-Code.
  2. Möchten Sie Verdreht, http2lib oder Socket-Code in einem Projekt mischen?
    • Sicher. Aber nur nicht vergessen, dass Verdreht ist single threaded, und dass jeder blockierenden Anruf in Verdrehte wird den gesamten Motorblock.
  3. Ist Verdreht pythonic für die meisten Bibliotheken (es komplexer als Alternativen ist, eine Abhängigkeit zu einem Nicht-Standard-Paket einführen ...)?
    • Es gibt viele Twisted-Eiferer, die es gehört in der Python-Standardbibliothek sagen. Aber viele Menschen können mit asyncore / asynchat anständigem Netzwerk-Code implementieren.

Andere Tipps

Siehe asychronous-Programmierung-in-python-twisted , Sie haben wenn abhängig von einem nicht-Standard (extern) Bibliothek passt Ihre Bedürfnisse zu entscheiden. Notieren Sie sich die Antwort von @Glyph , ist er der Gründer des Twisted Projekt und jede Twisted bezogene Frage autoritativ beantworten kann.

  

Im Kern-Bibliotheken wie Verdreht, die Funktion in der Hauptschleife ist nicht schlafen, aber ein Betriebssystemaufruf wie select () oder poll (), wie es durch ein Modul wie das Python Auswahlmodul ausgesetzt ist. Ich sage „wie“ wählen, weil dies eine API ist, die eine Menge von Plattform zu Plattform variiert, und fast jeden GUI-Toolkit hat seine eigene Version. Twisted bietet derzeit eine abstrakte Schnittstelle zu 14 verschiedene Variationen dieses Themas. Die gemeinsame Sache, die eine solche API bereitstellt, ist eine Art und Weise zur Verfügung stellen: „Hier zu sagen, eine Liste der Ereignisse, die ich für mich wartet. Geh zu schlafen, bis einer von ihnen geschieht, dann aufwachen und sagen Sie mir, wer von ihnen es war. „

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top