IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Faire une page d'attente


Sujet :

Réseau/Web Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Points : 140
    Points
    140
    Par défaut Faire une page d'attente
    Bonjour,

    j'ai un programme python avec une interface cgi. J'utilise le framework mako pour l'interface.

    J'aimerai faire une page d'attente pendant que le programme tourne.

    J'aimerai une page simple qui dit "en attente, le programme tourne", que cette page se rafraichie tous les 5 sec et dès que le programme a fini, il affiche le résultat.

    En faite, je récupère le code de quelqu'un d'autres mais je ne comprends pas trop. Donc, j'aimerai le changer.

    Merci de votre d'aide.

    Alaninho

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Bonjour ,

    - La page web doit permettre de lancer la tache de fond.
    - Une requete HTTP est donc émise par l'interface web , ce qui déclenche la tache avec en python un os.popen par exemple.

    - La tache de fond écrit un fichier style fichier.lock avec rien dedans
    - La page web interroge une deuxième cgi (en AJAX) qui elle va tester l'existance du fichier.lock
    - si le fichier existe, le programme tourne encore
    - si le programme finit de tourner, il supprime le fichier.lock

    de cette manière , il est possible de connaitre l'état d'un processus (qui peut de plus écrire son statut dans un fichier qu'une cgi peut également interroger), et d'observer la fin du traitement et donc de réagir dans l'interface de la manière adéquate.

    Attention tout de meme si la tache de fond crash, le fichier lock indiquera a tort que le programme tourne encore, car il ne sera pas supprimé...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Points : 140
    Points
    140
    Par défaut
    Merci pour ta réponse utopman.

    Est ce que tu aurais un exemple sous la main à me montrer stp ?
    Ta solution me semble bien car pas très difficile à mettre dans un template.

    Encore merci,

    Alaninho

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    un exemple allez !

    page_client.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <a href="http://localhost/monservice">process</a>
    <script>
    //jquery
    setTimeout(function() {
      $.get('http://localhost/verifie_traitement_fini.cgi', function (data){
        //callback
        if (data.status) {
          console.log('traitement en cours');
        }else{
           console.log('traitement fini');
        }
      });
    },1000)
    </script>
    le handler cgi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # Mode simple, voir os.popen en mode asynchrone pour faire lancer la tâche et reprendre la main directement après
    import os
    status = os.system('python mon_traitement_long.py')
    return HttpResponse({'status': status == 0})
    mon_traitement_long.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import os, time
    open('fichier.lock','a').close()
    while task_to_do():
      time.sleep(10)
    os.delete('fichier.lock')

    verifie_traitement_fini.cgi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import os
    return HttpResponse({'status': os.path.isfile('fichier.lock')})
    PS: je pense qu'il est judicieux de comprendre le code du précédent soit pour ne pas réinventer la roue, soit pour ne pas faire les mêmes erreurs.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Points : 140
    Points
    140
    Par défaut
    Merci beaucoup, j'essaye de comprendre le code précédent, c'est ce que je fais depuis 1 semaine. Ca commence à venir.

    Encore merci pour ton exemple, je vais regarder à ça.

    A

Discussions similaires

  1. [Débutant] faire une page de clasement
    Par mkachkh dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2006, 07h52
  2. Faire une boucle d'attente infinie
    Par ego dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 13/11/2006, 23h14
  3. [Tableaux] faire une page avec des catégorie
    Par kevinf dans le forum Langage
    Réponses: 20
    Dernier message: 29/09/2006, 05h58
  4. Se faire une page de teste de variable
    Par DaD92 dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 18h17
  5. [Système] Creer une page d'attente....
    Par Paulux1 dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2006, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo