Быстрый импорт данных с помощью fabric или paramiko

Я хотел бы импортировать данные с разных серверов, я использовал pysftp, но он работает, когда я отправляю ssh на сервер, а затем я запускаю свой скрипт.

Я хотел бы импортировать данные с разных серверов одновременно, используя ткань или pysftp, если это возможно. Я подготовил документацию по ткани и не нашел для этого способа. Жду ваших предложений или подобных примеров.

Пример *

from fabric.api import*
filename = 'path/ip_address.txt'
while True:
    with open(filename) as f:
        data = f.readlines()
    env.hosts= data
    env.user= "usr"
    env.password="pwd"
    get("~/path/*.xml","localpath/pm_xml")

используя этот скрипт, я получил сообщение об ошибке Хостов не найдено. Укажите (одну) строку хоста для подключения!

и когда я использую paramiko этот скрипт:

import paramiko
import os
filename = "/home/test/Desktop/ip_address.txt"
with open(filename) as f:
    data = f.readlines()
while True:    
    for ipAddr in data:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ipAddr,username="usr",password="pwd")
        sftp = ssh.open_sftp()
        for element in sftp.listdir("server_path"):
            if element.endswith(".xml"):
                try:
                    sftp.get("server_path"+element,"/home/test/Documents/pm_xml/"+element)
                except:
                    print(Exception)
        sftp.close()
        ssh.close() 

используя paramiko, я могу получить только один файл за секунду, но каждый сервер генерирует 100 файлов каждую минуту. мой ip_address.txt содержит IP-адрес:

11.11.11.11
22.22.22.22
33.33.33.33 

Любые предложения по одновременному доступу к другому серверу и быстрому импорту данных.

Да, дело в скорости. Я отредактировал свое название.

C.med 10.09.2018 11:22

Сначала вы должны выяснить, почему это так медленно. Это потому, что серверы медленные? Или у вас медленное соединение? Или у вас большая задержка подключения? Можно ли быстрее загружать файлы с одного сервера с помощью любого клиента SFTP?

Martin Prikryl 10.09.2018 11:26

зачем вам читать параметры в цикле в первом примере и читать их вне цикла во втором?

Evgeny 10.09.2018 13:39

Фактически, @EPo, когда я использую paramiko, я должен определить имя элемента, который я хотел бы скопировать, поэтому я должен знать его имя на сервере, а затем загрузить его с тем же именем. ткань делает это автоматически. Не уверен!

C.med 10.09.2018 14:03

@MartinPrikryl Вы правы, это из-за связи между сервером и моей машиной! оба работают в openstack, и когда я пытаюсь импортировать данные с сервера в другой лаборатории (например, в Финляндии), возникает большая задержка, и когда я использую другой сервер (во Франции), задержки больше нет, потому что другая машина, на которой Я запускаю свой сценарий тоже во Франции. Думаю, это вопрос связи.

C.med 10.09.2018 14:15

Судя по вашему тесту, я не думаю, что ясно, что проблема в задержке, а не в пропускной способности. Используйте какой-нибудь SFTP-клиент для загрузки двух половин файлов за две параллельные передачи. А потом скачиваем все файлы одним пакетом. Если первый в два раза быстрее, то проблема в задержке. Если оба подхода занимают примерно одинаковое время, проблема в пропускной способности.

Martin Prikryl 10.09.2018 14:22

@MartinPrikryl Думаю, я не совсем понял, объясню свой пример. Представьте, что у меня есть две машины, и я могу запустить свой сценарий на машине A или машине B; машина A находится в лаборатории во Франции, а другая - в Финляндии. поэтому, когда я пытаюсь импортировать данные в machineA с серверов в Финляндии, возникает задержка, но когда я пытаюсь импортировать данные с серверов во Франции, задержки больше нет. Поэтому, когда скрипт и серверы находятся в одной стране (другими словами, одна и та же лаборатория), я могу импортировать файлы данных размером 1 КБ всего за 1 минуту. Я тоже проверю, что ты сказал;)

C.med 10.09.2018 15:07

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

Martin Prikryl 10.09.2018 15:33
1
8
210
0

Другие вопросы по теме