Vlera e parazgjedhur e PySocks nuk e ridrejton ftplib
Ndigni socket-et që ftplib krijon në të vërtetë, në vend që të supozoni se set_default_proxy ndryshon implementimin vendas të socket-it në Python.
socks.set_default_proxy() ruan vlera të parazgjedhura për objektet e ardhshme PySocks socksocket. Nuk e zëvendëson klasën vendase socket të Python. Prandaj nuk e ridrejton ftplib vetëm sepse thirrja ndodh para një lidhjeje FTP.
Ndigni konstruktorët, jo variablin që mban URL-në e proxy-t. ftplib krijon një lidhje kontrolli dhe lidhje shtesë transferimi. Në FTP pasiv, një hyrje e suksesshme provon vetëm se lidhja e kontrollit funksionoi; edhe socket-i i të dhënave që përdoret për një listim ose transferim skedari ka nevojë për rrugën e synuar.
Një recetë që zëvendëson socket.socket ose mbështjell një modul bën diçka tjetër përveç vendosjes së vlerave të parazgjedhura të PySocks. Mund të ndikojë në biblioteka të tjera që ndajnë të njëjtin modul. Rivendosja e origjinalit më pas nuk i bën lidhjet e njëkohshme të izoluara nga ai ndryshim.
Një nënklasë ftplib e personalizuar mund të mbulojë rrugët e lidhjes, por pjesët e brendshme të kopjuara mbartin supozimet e versionit të Python nga i cili vijnë, duke përfshirë sentinelët e afatit kohor dhe trajtimin e protokollit. Përditësimet e bibliotekës standarde nuk e përditësojnë kopjen.
Zgjidhni një klient të mirëmbajtur ose një integrim të mbështetur për proxy-n dhe modalitetin FTP të kërkuar. Një shembull i shkarkimit pasiv FTP me PycURL ilustron një rrugë të veçantë klienti. Për një personalizim në pronësi të aplikacionit, identifikoni cili konstruktor hap çdo socket kontrolli dhe të dhënash dhe ruani sjelljen e mëparshme që ai zëvendëson. Një vlerë e saktë proxy është e dobishme vetëm kur ata konstruktorë e përdorin vërtet atë.