Gérer le multithreading avec Django

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour !

J'aimerais savoir comment gérer les Multithreading dans un fichier views.py dans Django.

Je vous explique : pour un de mes projets, j'ai besoin d'effectuer des actions en arrière plant sans qu'une requête à Django n'est lieux. Pour cela, j'ai tenté ce genre de code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import threading
import time

def variables():
    global a
    global b
    a = 1
    b = 0
    while b != 1 :
         a = a + 1

def views():
   #... contenu habituel d'un fichier views.py
   global a
   global b

   while b != 1:
       time.sleep(1)
       print a


variables = threading.Thread(None,variables) 
variables.start() 

views = threading.Thread(None,views) 
views.start() 

time.sleep(10)
b = 1 # Pour stopper le script après 10s

Seuls problèmes, je trouve trouve ce code affreux! De plus, lorsque je fait des modifications dans mon code, le serveur Django ne redémarre pas automatiquement comme prévu. Puis aussi une fois un ctrl+c effectué, impossible de relancer le serveur car le port utilisé est toujours 'occupé' par l'ancien serveur.

Faut il que j'utilise les thread uniquement (dans l'exemple) sur la fonction variables ou aussi sur la fonction views qui représente une dans mon vrai code l'ensemble des fonctions qui sont appelé lors d'une request ?

À peu près cela ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import threading
import time

def variables():
   global a
   global b
   a = 1
   b = 0
   while b != 1 :
        a = a + 1

variables = threading.Thread(None,variables) 
variables.start() 

while b != 1:
  time.sleep(1)
  print (a)
  if a > 20 :
      b = 1 # Pour stopper le script

Pouvez vous m'aider ?

Cordialement JulesMichael

Édité par JulesMichael

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte