Bonjour,

je suis en train de créer un soft de connexion sftp grace à paramiko, cela fonctionne pas trop mal.

Maintenant j'essaie d'ajouter des options comme l'annulation du travail en cours.

Mais je ne vois pas comment faire ça proprement, actuellement je lance la commande de transfert dans un QThread, et lorsque j'annule le transfert, je ferme la connexion paramiko et en réouvre une autre... ça ne me parait vraiment pas terrible comme façon de faire...

J'utilise 2 connexions différentes, 1 pour me balader dans le serveur et une autre pour les transferts, c'est cette seconde que je ferme et réouvre.


ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Paramiko = {"Client" : paramiko.SSHClient(),
            "Client2" : paramiko.SSHClient(),
            "Transfert" : None,
            "Sftp" : None}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class ThreadTransfert(QThread):
    def __init__(self, parent=None): super(ThreadTransfert, self).__init__(parent)
 
    def run(self):
        ....
        if Direction == "from Local to Server":
            Paramiko["Transfert"].put(From, To)
 
        elif Direction == "from Server to Local":
            Paramiko["Transfert"].get(From, To)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
            ### Fermeture de la connexion sftp
            Paramiko["Transfert"].close()
 
            ### Reinitialisation de la variable
            Paramiko["Transfert"] = None # Connexion en sftp
 
            ### Reouverture d'un canal
            Paramiko["Transfert"] = Paramiko["Client2"].open_sftp() # Connexion en sftp

Ma 2e question est comment calculer le débit approximatif ?
Mon idée était de comparer la taille du fichier en cours de transfert, ça fonctionne mais le résultat n'a aucun rapport avec mon debit...
en gros je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
fichier_distant_1 = x bits
sleep(1)
fichier_distant_2 = x bits
difference = fichier_distant_2 - fichier_distant_1
Mon débit est d'environ 110kbis/s mais la différence du fichier est en gros à 32kbits/s...?!

Comment peut on faire pour évaluer la vitesse ?


Merci pour vos idées et propositions.