2013-04-04 3 views
1

Я написал код для входа на FTP-сайт AS/400, перейдите в определенный каталог и найдите файлы, которые мне нужно скачать. Это работает, но кажется, что, когда есть много файлов для загрузки, которые я получаю:Python FTP «ERRNO 10054» Sequential File Загрузить

socket.error: [Errno 10054] An existing connection was 
       forcibly closed by the remote host 

я войти в систему и перейти в соответствующий каталог успешно:

try: 
    newSession = ftplib.FTP(URL,username,password) 
    newSession.set_debuglevel(3) 
    newSession.cwd("SOME DIRECTORY") 
except ftplib.all_errors, e: 
    print str(e).split(None,1) 
    sys.exit(0) 

Я захватить список файлов, которые я необходимость:

filesToDownload= filter(lambda x: "SOME_FILE_PREFIX" in x, newSession.nlst()) 

А вот где она умирает (в частности newSession.retrbinary('RETR '+f,tempFileVar.write)):

for f in filesToDownload: 
    newLocalFileName = f + ".edi" 
newLocalFilePath = os.path.join(directory,newLocalFileName) 
tempFileVar = open(newLocalFilePath,'wb') 
newSession.retrbinary('RETR '+f,tempFileVar.write) 
tempFileVar.close() 

Он загружает свыше 85% файлов, которые мне нужны, прежде чем я попаду в Errno 10054, и, я думаю, я просто смущен, почему он, похоже, произвольно умирает, когда он близок к завершению. Моя честная догадка сейчас слишком много запросов на FTP при попытке вытащить эти файлы.

Вот скриншот ошибки, как он появляется на моей командной строке:

enter image description here

Любые советы или указатели было бы удивительным. Я все еще пытаюсь устранить эту проблему.

+0

@JaneT: Модуль 'ftplib' на Python находится на более низком уровне, чем ваше типичное клиентское программное обеспечение FTP, поэтому нет' mget'. –

+0

Возможно ли стороннее программное обеспечение? Мне было проще скриптировать FTP, используя что-то вроде WinSCP, чем прямо в Python. На самом деле, я все еще использую Python для создания сценариев WinSCP, вызывать WinSCP на этих сценариях и обрабатывать файлы локально. Python и WinSCP - хорошая комбинация, когда ваша локальная машина - Windows (которую я вижу из вашей трассы). –

+0

@JaneT У меня нет доступа к заданию на AS/400, к сожалению. Он находится на стороне клиента, и даже если я сделаю запрос на него, будет медленный поворот. – SMT

ответ

0

Нет никакого реального ответа на это, я полагаю, похоже, что FTP-клиент клиента виноват здесь, он невероятно нестабилен. Лучшее, что я могу сделать, это взломать работу над улавливанием порожденной ошибки сокета и возобновлением, когда я остановился на предыдущем сеансе, прежде чем принудительно отключиться. ИТ-команда клиента в конце концов изучает проблему.

Вздох.

Смежные вопросы