PySocks డిఫాల్ట్ ftplib ను మళ్లీ మార్గనిర్దేశం చేయదు
set_default_proxy Python యొక్క స్థానిక socket అమలును మారుస్తుందని ఊహించకుండా ftplib నిజంగా సృష్టించే socket లను గమనించండి.
socks.set_default_proxy() భవిష్యత్ PySocks socksocket ఆబ్జెక్టుల కోసం డిఫాల్ట్ విలువలను నిల్వ చేస్తుంది. ఇది Python యొక్క స్థానిక socket తరగతిని భర్తీ చేయదు. అందువల్ల FTP కనెక్షన్ ముందు కాల్ జరగడం వల్లనే అది ftplib ను మళ్లీ మార్గనిర్దేశం చేయదు.
proxy URL ను ఉంచే వేరియబుల్ కాదు, constructor లను అనుసరించండి. ftplib ఒక నియంత్రణ కనెక్షన్ మరియు అదనపు బదిలీ కనెక్షన్ లను సృష్టిస్తుంది. passive FTP లో విజయవంతమైన లాగిన్ నియంత్రణ కనెక్షన్ పనిచేసిందని మాత్రమే నిరూపిస్తుంది; జాబితా లేదా ఫైల్ బదిలీ కోసం ఉపయోగించే data socket కూడా ఉద్దేశించిన మార్గాన్ని కోరుతుంది.
socket.socket ను భర్తీ చేసే లేదా module ను చుట్టే విధానం PySocks డిఫాల్ట్ లను సెట్ చేయడం కంటే వేరే పని చేస్తుంది. అదే module ను పంచుకునే ఇతర లైబ్రరీలను ప్రభావితం చేయవచ్చు. తర్వాత అసలైనదాన్ని పునరుద్ధరించడం ఏకకాల కనెక్షన్ లను ఆ మార్పు నుండి వేరు చేయదు.
అనుకూల ftplib ఉపతరగతి కనెక్షన్ మార్గాలను కవర్ చేయగలదు, కానీ కాపీ చేసిన అంతర్గత భాగాలు అవి వచ్చిన Python వెర్షన్ యొక్క ఊహలను, timeout sentinel లు మరియు protocol నిర్వహణతో సహా, మోసుకొస్తాయి. ప్రామాణిక లైబ్రరీ నవీకరణలు ఆ కాపీని నవీకరించవు.
అవసరమైన proxy మరియు FTP మోడ్ కోసం నిర్వహించబడే client లేదా మద్దతు ఉన్న integration ను ఎంచుకోండి. PycURL తో passive FTP డౌన్లోడ్ ఉదాహరణ ప్రత్యేక client మార్గాన్ని వివరిస్తుంది. అప్లికేషన్ యాజమాన్యంలోని అనుకూలీకరణ కోసం, ఏ constructor ప్రతి నియంత్రణ మరియు data socket ను తెరుస్తుందో గుర్తించి అది భర్తీ చేసే upstream ప్రవర్తనను కాపాడండి. సరైన proxy విలువ ఆ constructor లు దాన్ని నిజంగా ఉపయోగించినప్పుడే ఉపయోగపడుతుంది.