Le lundi 20 octobre 2008 à 14:43 +0200, Christophe Combelles a écrit :
> Je fais ce genre de chose dans l'Eztranet http://eztranet.gorfou.fr
> Les sources sont là (sauf la 1.3 qu'est pas finie) http://gorfou.fr/eztranet/
> Par contre c'est pas du ZEO, et c'est en zope 3.4 avec Paste au lieu de 
> Twisted.
> Mais la 1ere version était aussi sous 3.3.1 je crois, avec twisted, et se 
> comportait un peu comme tu dis, mais pendant l'upload seulement. Pendant la 
> conversion ca répondait bien.
> 
> Peut-être tu peux lancer le ffmpeg et l'oublier, puis demander à la vue 
> elle-même d'aller vérifier si le fichier a fini d'être encodé ? Je faisais un 
> truc comme ça jusqu'à la 1.2. Dans la 1.3 j'écris maintenant un blob 
> directement 
> dans le thread à la fin de l'encodage. Ca évite de laisser trainer plein de 
> fichiers dans un répertoire temporaire.
> 
> Si tu essayes zc.async, je suis curieux d'avoir ton retour.


Bon, au final, je me suis un peu creusé les méninges et, surtout, j'ai
lu la doc de Twisted ! Ça aide...
Surtout que pour ce qui est de zc.async il faut un Zope-3.4, donc avec
ma "vieille" 3.3.1 ça ne le faisait pas...

Conclusion de l'histoire ? J'avais un peu oublié que Twisted fonctionne
en mode asynchrone avec une gestion des threads "à lui" ; donc si on
veut utiliser des threads avec Twisted, il faut utiliser les siens !!

Au final, je ne sais pas si mon code est très orthodoxe, mais il marche
sans générer de blocage et en mélangeant gentiment les paquets :
 - "scheduler" pour la gestion des tâches répétitives ou différées
 - "zc.twist" pour lancer une tâche répétitive sur un objet persistant
 - "twisted.internet.reactor.callInThread(...)" pour lancer ma tâche de
conversion proprement dite, laquelle passe par un client ZEO pour éviter
les problèmes avec les connexions et les transactions différées.

Le tout laisse le serveur réactif :
 - pendant le téléchargement du fichier (tests faits avec des vidéos de
20 Mo environ)
 - pendant la conversion en FLV avec FFMPEG.
Et c'est seulement à la fin de la conversion que le fichier est "marqué"
dans la ZODB avec une interface spécifique qui fournit une vue pour
l'affichage en Flash...

L'inconvénient par contre c'est qu'à ce jour le code est lié à Twisted ;
je ne sais pas si on peut facilement avoir l'équivalent avec un autre
environnement...

Voilà, le tout fait une vingtaine de ligne, je peux l'envoyer à ceux que
ça intéresse.

A+

  Thierry Florac
-- 
  Chef de projet intranet/internet
  Office National des Forêts - Département Informatique
  2, Avenue de Saint-Mandé
  75570 PARIS Cedex 12
  Mél : [EMAIL PROTECTED]
  Tél. : +33 01.40.19.59.64
  Fax. : +33 01.40.19.59.85

_______________________________________________
zope3-french-user mailing list
zope3-french-user@lists.afpy.org
http://lists.afpy.org/mailman/listinfo/zope3-french-user

Répondre à