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

Django Python Discussion :

Lancement de tâches de fond


Sujet :

Django Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut Lancement de tâches de fond
    Bonsoir,

    j'ai un petit souci avec Django qui me résiste depuis un petit moment.

    J'ai fait une view dont le code python lance une tâche dite de fond, ie un job unix : sleep 20 (attend 20 secondes). Ce qui simule pour moi une tâche qui dure longtemps.

    Ce que je souhaiterais ce serait que le lancement de ce job ne perturbe pas le chargement de la page. En gros l'utilisateur, en chargeant la vue, doit lancer une tâche qui peut durer plusieurs heures, la page doit finir d'être chargée et il peut fermer son navigateur. Charge à moi de lui envoyer un mail après quand ce sera fini.

    Bref, quel que soit la manière dont je lance mon sleep 20, impossible d'arrêter le chargement de la page avant que ce délai ne soit terminé. Alors que la page est complètement chargée, que le job est lancé, j'ai toujours mon navigateur qui attend quelquechose jusqu'à la fin du sleep. Or le job n'est pas censé interférer avec le chargement de la page, vu qu'il est lancé en background.

    Je ne comprend pas ce qu'il se passe.

    Note : je lance mon process de la manière suivante :
    subprocess.Popen('sleep 20 &', shell = True)

    Ceci dans un fichier python s'exécute en un clin d'oeil, le process Python se termine tandis que j'ai un process sleep qui dure 20 secondes.

    Ceci dans Django empêche que la page finisse de se charger

    Je ne comprends pas pourquoi ... Une idée ?

    Merci de votre aide ! Jsuis vraiment au bout du rouleau là ...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    il me semble que sleep endort le processus.
    As tu essayé de lancer autre chose ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut
    Oui, j'ai lancé différentes choses, rien n'y fait.

    Mais à priori, c'est une limitation de Django que je ne suis pas le premier à rencontrer : http://www.turnkeylinux.org/blog/django-celery-rabbitmq

    J'ai plus qu'à opter pour une solution de queuing...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Les signaux ne résoudraient-ils pas ton problème ?

Discussions similaires

  1. Tâche de fond.
    Par Vince1404 dans le forum Java ME
    Réponses: 4
    Dernier message: 08/07/2006, 15h59
  2. Service / Tâche de fond
    Par Invité dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 06/02/2006, 18h23
  3. [Système] Processus en tâche de fond
    Par yakotey dans le forum Langage
    Réponses: 11
    Dernier message: 09/01/2006, 00h09
  4. executable en "tâche de fond"
    Par jaquet_vincent dans le forum Windows
    Réponses: 5
    Dernier message: 22/10/2004, 14h49

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