2011-06-02 3 views
1

Je voudrais faire quelque chose de similaire:Vue Django et processus séparés

f (n) calcule n! , cela prend évidemment beaucoup de temps, donc les calculs doivent être exécutés dans un processus séparé de la vue django. De plus, j'aimerais que la vue renvoie une réponse immédiatement (par exemple, une progression de 0%) et que l'interrogation suivante ait besoin de mettre à jour la progression, de sorte que la vue doit communiquer avec le processus ci-dessus.

Quel serait le meilleur moyen d'y parvenir?

+1

cela devrait probablement être lancé à une file d'attente de tâches –

+0

J'essaye django-tâches maintenant – pyeleven

Répondre

0

Andrey Fedoseev a donné une grande suggestion, mais laissez-moi trouver une solution plus générale. Vous pouvez créer un modèle WaitingTasks dans lequel votre vue place de nouvelles tâches. Ensuite, il est possible d'utiliser n'importe quelle méthode pour traiter ces tâches en attente - cronjob, upstart démon, quoi que ce soit - en écrivant des progrès et des résultats.

(En fait celery utilise une approche similaire, avec seulement RabbitMQ)

0

J'ai utilisé la stratégie contenue dans ce lien grande influence: Signals in Django. La section sur "Manipuler les signaux de manière asynchrone" où le module de threading python est utilisé est ce que j'ai utilisé.

Le code des signaux est assez obsolète (même s'il est en tête d'une recherche Google). Pourtant, le code de threading est probablement ce qui peut vous aider le plus.

Questions connexes