Ich muss ein Proxy-ähnliches Programm in Python schreiben, der Arbeitsablauf ist dem eines Web-Proxys sehr ähnlich. Das Programm sitzt zwischen dem Client und dem Server, fängt Anfragen ab, die vom Client an den Server gesendet werden, verarbeitet die Anfrage und sendet sie dann an den ursprünglichen Server. Das verwendete Protokoll ist natürlich ein privates Protokoll, das TCP verwendet.
Um den Aufwand zu minimieren, möchte ich Python Twisted verwenden, um den Empfang von Anfragen (der Teil fungiert als Server) und das erneute Senden (der Teil fungiert als Client) abzuwickeln.
Um die Leistung zu maximieren, möchte ich Python-Multiprocessing verwenden (Threading hat das GIL-Limit), um das Programm in drei Teile (Prozesse) aufzuteilen. Der erste Prozess führt Twisted aus, um Anfragen zu empfangen, die Anfrage in eine Warteschlange zu stellen und den Erfolg sofort an den ursprünglichen Client zurückzugeben. Der zweite Prozess nimmt die Anfrage aus der Warteschlange, verarbeitet sie weiter und stellt sie in eine andere Warteschlange. Der dritte Prozess nimmt die Anfrage aus der zweiten Warteschlange und sendet sie an den ursprünglichen Server.
Ich war ein Newcomer zu Python Twisted, ich weiß, es ist ereignisgesteuert, ich habe auch gehört, es ist besser, nicht Twisted mit Threading oder Multiprocessing zu mischen. Also ich weiß nicht, ob dieser Weg angemessen ist oder gibt es einen eleganteren Weg, indem Sie nur Twisted?