मैं एक फ्लैकी एफ़टीपी सर्वर से फ़ाइलों को डाउनलोड कर रहा हूं जो अक्सर फ़ाइल स्थानांतरण के दौरान बाहर निकलते हैं और मैं सोच रहा था कि डाउनलोड को फिर से कनेक्ट करने और फिर से शुरू करने का कोई तरीका है या नहीं। मैं अजगर के ftplib का उपयोग कर रहा हूँ।टाइमआउट के बाद एफ़टीपी डाउनलोड फिर से शुरू करें
#! /usr/bin/python
import ftplib
import os
import socket
import sys
#--------------------------------#
# Define parameters for ftp site #
#--------------------------------#
site = 'a.really.unstable.server'
user = 'anonymous'
password = '[email protected]'
root_ftp_dir = '/directory1/'
root_local_dir = '/directory2/'
#---------------------------------------------------------------
# Tuple of order numbers to download. Each web request generates
# an order numbers
#---------------------------------------------------------------
order_num = ('1','2','3','4')
#----------------------------------------------------------------#
# Loop through each order. Connect to server on each loop. There #
# might be a time out for the connection therefore reconnect for #
# every new ordernumber #
#----------------------------------------------------------------#
# First change local directory
os.chdir(root_local_dir)
# Begin loop through
for order in order_num:
print 'Begin Proccessing order number %s' %order
# Connect to FTP site
try:
ftp = ftplib.FTP(host=site, timeout=1200)
except (socket.error, socket.gaierror), e:
print 'ERROR: Unable to reach "%s"' %site
sys.exit()
# Login
try:
ftp.login(user,password)
except ftplib.error_perm:
print 'ERROR: Unable to login'
ftp.quit()
sys.exit()
# Change remote directory to location of order
try:
ftp.cwd(root_ftp_dir+order)
except ftplib.error_perm:
print 'Unable to CD to "%s"' %(root_ftp_dir+order)
sys.exit()
# Get a list of files
try:
filelist = ftp.nlst()
except ftplib.error_perm:
print 'Unable to get file list from "%s"' %order
sys.exit()
#---------------------------------#
# Loop through files and download #
#---------------------------------#
for each_file in filelist:
file_local = open(each_file,'wb')
try:
ftp.retrbinary('RETR %s' %each_file, file_local.write)
file_local.close()
except ftplib.error_perm:
print 'ERROR: cannot read file "%s"' %each_file
os.unlink(each_file)
ftp.quit()
print 'Finished Proccessing order number %s' %order
sys.exit()
त्रुटि है कि मैं: socket.error: [errno 110] कनेक्शन
किसी भी मदद का समय समाप्त हो बहुत सराहना कर रहा है यहाँ कोड है कि मैं का उपयोग कर रहा है।
निश्चित रूप से http://ftputil.sschwarzer.net/trac देखें, यह किसी भी FTP संबंधित कार्य को आसान बना देगा। – agf