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à ...