Le 21 octobre 2008 15:14, Christophe Combelles <[EMAIL PROTECTED]> a écrit :
> Thierry Florac a écrit :
>>
>> 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 m'interesse :)
>

Moi je serais curieux de savoir si gp.fileupload peut fonctionner dans
ce contexte.

Ton app est servie en wsgi ?

>
>>
>> A+
>>
>>  Thierry Florac
>
> _______________________________________________
> zope3-french-user mailing list
> zope3-french-user@lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/zope3-french-user
>



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

Répondre à