socks.set_default_proxy() zapisuje wartości domyślne dla przyszłych obiektów PySocks socksocket. Nie zastępuje natywnej klasy socket Pythona. W związku z tym nie przekierowuje ftplib tylko dlatego, że wywołanie następuje przed połączeniem FTP.

Śledź konstruktory, a nie zmienną przechowującą adres URL proxy. ftplib tworzy połączenie sterujące i dodatkowe połączenia transferowe. W pasywnym FTP udane logowanie dowodzi jedynie, że połączenie sterujące działało; gniazdo danych używane do listowania lub transferu pliku również potrzebuje zamierzonej trasy.

Przepis, który zastępuje socket.socket lub opakowuje moduł, wykonuje inną czynność niż ustawienie domyślnych wartości PySocks. Może wpłynąć na inne biblioteki korzystające z tego samego modułu. Późniejsze przywrócenie oryginału nie izoluje współbieżnych połączeń od tej zmiany.

Własna podklasa ftplib może objąć ścieżki połączeń, ale skopiowane wnętrzności niosą założenia wersji Pythona, z której pochodzą, w tym sentinele limitu czasu i obsługę protokołu. Aktualizacje biblioteki standardowej nie aktualizują kopii.

Wybierz utrzymywanego klienta lub obsługiwaną integrację dla wymaganego proxy i trybu FTP. Przykład pasywnego pobierania FTP za pomocą PycURL pokazuje osobną ścieżkę klienta. W przypadku dostosowania należącego do aplikacji ustal, który konstruktor otwiera każde gniazdo sterujące i danych, i zachowaj zachowanie, które ono zastępuje. Poprawna wartość proxy jest użyteczna tylko wtedy, gdy te konstruktory faktycznie jej używają.

Powiązane artykuły