PySocks numatytasis nustatymas neperjungia ftplib
Stebėkite, kokius sockets iš tikrųjų kuria ftplib, o ne manykite, kad set_default_proxy pakeičia natūralų Python socket įgyvendinimą.
socks.set_default_proxy() saugo numatytuosius nustatymus būsimiems PySocks socksocket objektams. Jis nepakeičia natūralios Python socket klasės. Todėl jis neperkelia ftplib tik todėl, kad kvietimas įvyksta prieš FTP prisijungimą.
Sekite konstruktorius, o ne kintamąjį, kuriame laikomas proxy URL. ftplib sukuria valdymo ryšį ir papildomus perdavimo ryšius. Naudojant pasyvųjį FTP, sėkmingas prisijungimas įrodo tik tai, kad valdymo ryšys veikė; duomenų socket, naudojamas sąrašui ar failo perdavimui, taip pat turi eiti numatytu maršrutu.
Receptas, kuris pakeičia socket.socket arba apgaubia modulį, atlieka kitą veiksmą nei PySocks numatytųjų nustatymų nustatymas. Jis gali paveikti kitas bibliotekas, naudojančias tą patį modulį. Vėlesnis originalo atkūrimas nepadaro vienu metu vykstančių ryšių izoliuotais nuo pakeitimo.
Pasirinktinis ftplib poklasis gali apimti ryšių kelius, tačiau nukopijuoti vidiniai elementai atsineša Python versijos, iš kurios jie paimti, prielaidas, įskaitant timeout sentinelius ir protokolo apdorojimą. Standartinės bibliotekos atnaujinimai neatanaujina kopijos.
Pasirinkite palaikomą klientą arba palaikomą integraciją reikiamam proxy ir FTP režimui. PycURL pasyvaus FTP atsisiuntimo pavyzdys iliustruoja atskirą kliento kelią. Jei pritaikymas priklauso programai, nustatykite, kuris konstruktorius atidaro kiekvieną valdymo ir duomenų socket, ir išsaugokite pradinį elgesį, kurį jis pakeičia. Teisinga proxy reikšmė naudinga tik tada, kai tie konstruktoriai ją iš tikrųjų naudoja.