OVH Cloud OVH Cloud

Transfet fichier puis traitement

4 réponses
Avatar
Didier FRAISSE
Bonjour

j'ai un script dont le but est de traiter tous les fichiers d'un répertoire.

while True:
lstFile = glob(os.path.join(repertoire_à_scanner,'*.txt'))
for src in lstFile: Traiter( lstFile )
time.sleep(1)

Mon problème est le suivant.
Le répertoire à scruter est alimenté par transfert FTP et parfois le
traitement du fichier est lancé avant que le fichier ne soit
complétement transféré.

Par quel moyen puis je m'assurer que le fichier est bien complet avant
de le traiter.

Merci d'avance
Didier

4 réponses

Avatar
Sébastien V.
"Didier FRAISSE" a écrit dans le message news:
41da4507$0$20276$
Bonjour

j'ai un script dont le but est de traiter tous les fichiers d'un
répertoire.


while True:
lstFile = glob(os.path.join(repertoire_à_scanner,'*.txt'))
for src in lstFile: Traiter( lstFile )
time.sleep(1)

Mon problème est le suivant.
Le répertoire à scruter est alimenté par transfert FTP et parfois le
traitement du fichier est lancé avant que le fichier ne soit
complétement transféré.

Par quel moyen puis je m'assurer que le fichier est bien complet avant
de le traiter.

Merci d'avance
Didier



Salut Didier,

Si tu as accès au logiciel qui fait du FTP tu peux mettre en place une
solution à l'aide d'un fichier lock :

Ton FTP copie un fichier vide "NOM_FICHIER.lock" puis envoie "NOM_FICHIER"
et enfin copie dans "NOM_FICHIER.lock" un texte "OK". Il te suffit
d'attendre ces fichiers "lock" et dès que tu en as un d'attendre qu'il
contienne "OK".

Sébastien

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !


Gérer des LOCKs via FTP ; en voilà une (bonne) idée...
Mais, à la place de ces fichiers LOCKS, on pourrait envisager des fichiers
"Queue", ou "Semaphore", non ?


- c'était juste histoire de discuter un peu -


MCI
Avatar
Sébastien V.
Michel Claveau - abstraction méta-galactique non triviale en fuite
perpétuelle. wrote:
Bonjour !


Gérer des LOCKs via FTP ; en voilà une (bonne) idée...
Mais, à la place de ces fichiers LOCKS, on pourrait envisager des
fichiers "Queue", ou "Semaphore", non ?



Tu veux bien expliquer ?

Pour moi Queue et Semaphore sont des concepts qui ne s'appliquent pas avec
du FTP (ce qui serait sympa) mais à du multi-threading

Sébastien

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Pour moi Queue et Semaphore sont des concepts qui ne s'appliquent pas
avec du FTP (ce qui serait sympa) mais à du multi-threading




Exact, mais LOCK est aussi une notion existant dans le (multi)-threading.


En gros, ton système de fichiers LOCKS est très bien, mais, tel que je l'ai
compris, il n'empêchera pas un client FTP d'envoyer une nouvelle version
d'un fichier, même si le traitement des fichiers est déjà en cours de
lecture de ce fichier.
Pour cela, il faudrait que le client FTP respecte lui aussi des règles
d'accès. D'où l'analogie avec les sémaphores, ou mieux, les Queue.

Maintenant, pour l'implémentation, je pense qu'il faudrait réfléchir un peu
plus. On devrait pouvoir s'inspirer du verrouillage optimiste des SGBD
clients-serveur, notamment en mode déconnecté.


Bonne soirée.
--
Michel Claveau