Python FTP и потоки

Мне нужно создать платформу "поворотный стол". Мой сервер должен быть в состоянии взять файл с FTP A и отправить его на FTP B. Я использовал много систем передачи файлов, поэтому у меня нет проблем с ftplib, aspera, s3 и другими протоколами передачи.

Дело в том, что у меня есть большие файлы (150G) на FTP A. И много передач будет происходить одновременно, с и на многие FTP-серверы или другие.

Я не хочу, чтобы моя платформа фактически хранила эти файлы, чтобы отправлять их в другое место. Я также не хочу загружать все в память... Мне нужно "поточить" бинарные данные из A в B с минимальной нагрузкой на моей платформе передачи.

Я смотрю на https://docs.python.org/2/library/io.html с ReadBuffer и WriteBuffer, но я не могу найти примеры, а документация для меня довольно загадочна...

У кого-нибудь есть отправная точка?

buff = io.open('/var/tmp/test', 'wb')

def loadbuff(data):
    buff.write(data)

self.ftp.retrbinary('RETR ' + name, loadbuff, blocksize=8)

Итак, мои данные поступают в виде buff, который представляет собой объект ‹_io.BufferedWriter name='/var/tmp/test'>, но как я могу начать чтение из него, пока ftplib продолжает загрузку?

Надеюсь, я достаточно ясен, любая идея приветствуется.

Спасибо


person LeSuspect    schedule 29.04.2015    source источник