Schreiben Sie einen TCP-Client mit Python Twisted

Ich musste einen TCP-Client schreiben, also suchte ich. Zuerst habe ich mit dem Modul socket geschrieben, aber mit Twisted ist es einfach. Es war einfach zu schreiben und erneut zu versuchen, also irgendwie.

Was du machen willst

Es gibt Hardware, die regelmäßig Sensordaten erfassen und über TCP nach außen senden kann. Es stellt eine Verbindung dazu her, protokolliert die empfangenen Daten und führt eine beliebige Verarbeitung durch.

Die Hardware, die zum Server wird, ist kein Protokoll, das eine Authentifizierung oder einen Aufruf erfordert, sondern verschüttet nur Daten.

ich werde schreiben

protocol.py


import logging
from twisted.internet.protocol import Protocol

logger = logging.getLogger(__name___)


#Klasse, die das Protokoll verarbeitet
class SomeProtocol(Protocol):

    def dataReceived(self, data):
        logger.debug(u'data received. data: %s' % data)

        #In Protokolldatei schreiben
        f = open('log.dat', 'ab')
        f.write(data)
        f.close()

client.py


import logging

from twisted.internet.protocol import ReconnectingClientFactory

from .protocol import SomeProtocol

logger = logging.getLogger(__name___)


#Client-Klasse. Es ist diese Klasse, die den Verbindungsprozess tatsächlich ausführt.
class SomeServerClient(ReconnectingClientFactory):

    protocol = SomeProtocol

    def buildProtocol(self, addr):
        """Instanziierungsmethode für Protokollklassen
        """
        logging.info(u'Successfully connected to %s' % addr)

        self.resetDelay()  #Wiederherstellungsverzögerung wiederherstellen

        protocol = self.protocol()
        protocol.factory = self
        return protocol

    def startedConnecting(self, connector):
        """Wird nach der Verbindung aufgerufen
        """
        logger.info(u'Started to connect.')

    def clientConnectionLost(self, connector, reason):
        """Handler bei Verbindungsverlust
        """
        logger.warning(u'Lost connection. Reason: %s', reason)
        ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

    def clientConnectionFailed(self, connector, reason):
        """Handler, wenn die Verbindung fehlschlägt
        """
        logger.error(u'Connection failed. Reason: %s' % reason)
        ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)

Versuche zu rennen

Stellen Sie über das Reaktormodul eine Verbindung zum TCP-Server her.

from twisted.internet import reactor

reactor.connectTCP('127.0.0.1', 5403, SomeServerClient())
reactor.run()

Andere

Twisted Es ist nicht sehr schnell und gevent ist gut, also hat mir @masahif gesagt, dass ich es später nachschlagen werde.

Dieses Mal verarbeiten ein einzelner Server und ein einzelner Client nur die Daten, die jede Sekunde fließen, sodass Sie sich keine Gedanken über die Geschwindigkeit machen müssen. Es wäre schön, wenn Sie einfach schreiben könnten, was Sie tun möchten (Wiederholungsverarbeitung), also Twisted Es sieht okay aus.

Ich möchte es zusammen lesen

Recommended Posts

Schreiben Sie einen TCP-Client mit Python Twisted
Schreiben Sie ein Batch-Skript mit Python3.5 ~
"Erste elastische Suche" beginnend mit einem Python-Client
Ich möchte mit Python in eine Datei schreiben
Machen Sie eine Lotterie mit Python
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Schreiben Sie mit Python in csv
Erstellen Sie ein Verzeichnis mit Python
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
[Python] Was ist eine with-Anweisung?
Schreiben Sie eine Dichotomie in Python
Löse ABC163 A ~ C mit Python
Python-Grafikhandbuch mit Matplotlib.
[Python] Mit Python in eine CSV-Datei schreiben
Lassen Sie uns eine GUI mit Python erstellen.
Erstellen Sie eine virtuelle Umgebung mit Python!
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Ich habe mit Python eine Lotterie gemacht.
Schreiben Sie ein Restnetzwerk mit TFLearn
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
Schreiben Sie ein Kreisdiagramm in Python
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Schreiben Sie einen supereinfachen TCP-Server
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Schreiben Sie ein gestapeltes Histogramm mit matplotlib
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
Ein einfacher HTTP-Client, der in Python implementiert ist
Installieren Sie Python als Framework mit pyenv
Einfacher Slack API-Client mit Python
Erstellen Sie mit Python + PIL ein Dummy-Image.
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
Führen Sie regelmäßig eine beliebige Verarbeitung mit Python Twisted durch
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Kartenmietinformationen auf einer Karte mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Lassen Sie uns mit Python langsam sprechen
Erstellt eine Reise von Darts mit Python (Nachrichten)
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python