PySocks zadana vrijednost ne preusmjerava ftplib
Pratite sockete koje ftplib stvarno stvara umjesto da pretpostavljate da set_default_proxy mijenja ugrađenu implementaciju socketa u Pythonu.
socks.set_default_proxy() pohranjuje zadane vrijednosti za buduće PySocks socksocket objekte. Ne zamjenjuje ugrađenu klasu socketa u Pythonu. Zbog toga ne preusmjerava ftplib samo zato što se poziv dogodi prije FTP veze.
Pratite konstruktore, a ne varijablu koja drži URL proxyja. ftplib stvara upravljačku vezu i dodatne veze za prijenos. Kod pasivnog FTP-a uspješna prijava dokazuje samo da je upravljačka veza radila; socket za podatke koji se koristi za popis ili prijenos datoteke također treba predviđenu rutu.
Recept koji zamjenjuje socket.socket ili obavija modul izvodi drugu radnju izvan postavljanja PySocks zadanih vrijednosti. Može utjecati na druge biblioteke koje dijele taj modul. Privremeno vraćanje izvornika poslije ne čini istodobne veze izoliranima od promjene.
Prilagođena potklasa ftplib može pokriti putanje veza, ali kopirane unutrašnjosti nose pretpostavke izdanja Pythona iz kojeg potječu, uključujući oznake vremenskog ograničenja i rukovanje protokolom. Ažuriranja standardne biblioteke ne ažuriraju kopiju.
Odaberite održavanog klijenta ili podržanu integraciju za traženi proxy i FTP način rada. Primjer preuzimanja pasivnim FTP-om pomoću PycURL-a prikazuje zaseban klijentski put. Za prilagodbu u vlasništvu aplikacije utvrdite koji konstruktor otvara svaki upravljački socket i socket za podatke te sačuvajte ponašanje uzvodno koje zamjenjuje. Ispravna vrijednost proxyja korisna je samo kada je ti konstruktori doista koriste.