Ich möchte gerne mittels eines Python-Scripts einen TCP-Server implementieren.
Dessen Aufgabe soll die Folgende sein:
Er wird im ein- bis zweistelligen ms Bereich zyklisch von einem Remote-Client gepollt, liest dann bestimmte Daten auf seiner lokalen Workstation aus und schickt diese an den pollenden Client.
Von folgendem kann man ausgehen:
- Es verbindet sich immer nur ein Client mit dem Server über Ethernet
- Client und Server laufen auf einer Windows-Plattform
- Es wird Python 2.5.1 eingesetzt
Ziel:
- Der Server sollte möglichst performant sein bzgl. lesen, bearbeiten und zurücksenden der Clientanfrage
- Er soll seine lokale Workstation so wenig wie möglich belasten
- Er soll nicht zu Systeminstabilitäten führen
Da ich mich mit der Thematik nicht besonders gut auskennen, möchte ich hier gerne einmal diskutieren, wie ich meinen bestehenden (recht einfachen) Code optimieren kann, um die vorher genannten Anforderungen besser zu erfüllen.
Bisher habe ich folgendes:
Code: Alles auswählen
import socket
import sys
port_number = 12345
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (socket.gethostname(), port_number)
sock.bind(server_address)
sock.listen(1)
while True:
connection, client_address = sock.accept()
try:
while True:
data = connection.recv(4096)
if data:
connection.sendall(data) #hier werden später die angefragten Daten lokal gelesen, aufbereitet und an den Client gesendet
else:
break
finally:
connection.close()