Re: [Zope3-french-user] Gestion de threads sous Zope3 - Ça marche !!

2008-10-21 Par sujet Thierry Florac
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


Re: [Zope3-french-user] Gestion de threads sous Zope3 - Ça marche !!

2008-10-21 Par sujet Thierry Florac
Le mardi 21 octobre 2008 à 15:31 +0200, Gael Pasgrimaud a écrit :
 Moi je serais curieux de savoir si gp.fileupload peut fonctionner dans
 ce contexte.
 
 Ton app est servie en wsgi ?

Heu...
À vrai dire je ne me suis pas trop posé la question...!
Mais comme c'est la config de base de Zope-3.3 avec Twisted, je serais
tenté de dire que non.

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