HTTP架構師一般都會使用很多種複雜的機制來將多個子模組組合建成一個HTTP服務。現在的網路爬蟲中,已經形成了4種基本的模式。如果已經編寫了用於產生動態內容的網路爬蟲Python程式碼,並且已經選擇了某個支援WSGI的API或框架,應該如何將HTTP服務部署到線上呢?
第一步、執行一個使用網路爬蟲Python編寫的伺服器,伺服器的程式碼中可以直接呼叫WSGI介面。現在流行的是Green Unicorn(Gunicorn)伺服器,不過還有其他已經可以用來生產環境的純Python伺服器。
第二步、設定mod_wsgi並執行Apache,在獨立的WSFIDaemonProcess中執行Python程式碼,由mod_wsgi啟動守護程式。
第三步、在後端運行一個類似Gunicorn的Python HTTP伺服器(或支援所選非同步框架的任何伺服器),然後在前端運行一個既能返回靜態文件,又能對Python編寫的動態資源服務進行反向代理的Web伺服器。
第四步、在前端運行一個純粹的反向代理(如Varnish),在該反向代理後端運行Apache或nginx,在後端運行Python編寫的HTTP伺服器。這是一個三層的架構。這些反向代理可以分佈在不同的地理位置,這樣子就能夠將離客戶端近的反向代理上的快取資源傳回給發送請求的用戶端。
長期以來,對這4個架構的選擇主要基於CPython的3個運行時的特性,即解釋器佔用內存大、解釋器運行慢、全局解釋器(GIL,Global Interpreter Lock)禁止多個線程同時運行Python字節碼。但同時帶來了記憶體中只能載入一定數量的Python實例。提供HTTP代理、HTTPS代理、Socks5代理等,住宅代理極速響應,保障用戶資訊的安全。