HTTP-Architekten verwenden im Allgemeinen eine Vielzahl komplexer Mechanismen, um mehrere Untermodule zu einem HTTP-Dienst zu kombinieren. In aktuellen Webcrawlern wurden vier Grundmodi gebildet. Wenn Sie Python-Code für das Web-Crawling geschrieben haben, um dynamische Inhalte zu generieren, und eine API oder ein Framework ausgewählt haben, das WSGI unterstützt, wie sollten Sie den HTTP-Dienst online bereitstellen?


Der erste Schritt besteht darin, einen in Python geschriebenen Server mit einem Webcrawler auszuführen. Die WSGI-Schnittstelle kann direkt im Servercode aufgerufen werden. Der derzeit beliebteste Server ist der Green Unicorn (Gunicorn)-Server, es gibt jedoch auch andere reine Python-Server, die in Produktionsumgebungen verwendet werden können.


Der zweite Schritt besteht darin, mod_wsgi zu konfigurieren und Apache auszuführen, den Python-Code in einem unabhängigen WSFIDaemonProcess auszuführen und mod_wsgi den Daemon-Prozess zu starten.


Der dritte Schritt besteht darin, einen Python-HTTP-Server ähnlich wie Gunicorn auf dem Backend auszuführen (oder einen beliebigen Server, der das ausgewählte asynchrone Framework unterstützt) und dann einen Server auf dem Frontend auszuführen, der statische Dateien zurückgeben und auf in Python geschriebene dynamische Ressourcendienste reagieren kann . Zum Proxy-Webserver.


Schritt 4: Führen Sie einen reinen Reverse-Proxy (z. B. Varnish) am Front-End aus, führen Sie Apache oder Nginx am Back-End des Reverse-Proxys aus und führen Sie am Back-End einen in Python geschriebenen HTTP-Server aus. Dies ist eine dreistufige Architektur. Diese Reverse-Proxys können an verschiedenen geografischen Standorten verteilt sein, sodass zwischengespeicherte Ressourcen auf dem Reverse-Proxy in der Nähe des Clients an den Client zurückgegeben werden können, der die Anfrage sendet.


Die Auswahl dieser vier Architekturen basierte lange Zeit hauptsächlich auf den drei Laufzeitmerkmalen von CPython: Der Interpreter benötigt viel Speicher, der Interpreter läuft langsam und der globale Interpreter (GIL, Global Interpreter Lock) verhindert, dass mehrere Threads gleichzeitig Bytecode ausführen. Es bringt aber auch mit sich, dass nur eine bestimmte Anzahl von Python-Instanzen in den Speicher geladen werden kann. Bietet HTTP-Proxy, HTTPS-Proxy, Socks5-Proxy usw. Der Residential-Proxy reagiert extrem schnell, um die Sicherheit der Benutzerinformationen zu gewährleisten.

[email protected]