socks.set_default_proxy() garda valores predeterminados para futuros obxectos PySocks socksocket. Non substitúe a clase socket nativa de Python. Por tanto, non redirixe ftplib só porque a chamada ocorre antes dunha conexión FTP.

Segue os construtores, non a variable que contén o URL do proxy. ftplib crea unha conexión de control e conexións de transferencia adicionais. Con FTP pasivo, un inicio de sesión correcto só demostra que a conexión de control funcionou; o socket de datos usado para unha listaxe ou unha transferencia de ficheiro tamén necesita a ruta prevista.

Unha receita que substitúe socket.socket ou envolve un módulo realiza outra acción ademais de establecer os valores predeterminados de PySocks. Pode afectar outras bibliotecas que comparten ese módulo. Restaurar temporalmente o orixinal despois non illa as conexións simultáneas da mutación.

Unha subclase personalizada de ftplib pode cubrir as rutas de conexión, pero as interioridades copiadas arrastran as suposicións da versión de Python da que proveñen, incluídos os centinelas de tempo de espera e o tratamento do protocolo. As actualizacións da biblioteca estándar non actualizan a copia.

Escolle un cliente mantido ou unha integración compatible para o proxy e o modo FTP requiridos. Un exemplo de descarga FTP pasiva con PycURL ilustra unha ruta de cliente separada. Para unha personalización propia da aplicación, identifica que construtor abre cada socket de control e de datos e conserva o comportamento orixinal que substitúe. Un valor de proxy correcto só é útil cando eses construtores o consomen de verdade.

Artigos relacionados