2015-07-22 2 views
0
for i in xrange(1,NUM_USERS+1): 
      print i 
      private = RSA.generate(3072,Random.new().read) 
      public = private.publickey() 
      new_user = User(public_rsa=public.exportKey(), secret_rsa=private.exportKey()) 
      new_user.save() 

Dans la boucle au-dessus, je donne la valeur de NUM_USERS=100 mais la boucle est itérer jusqu'à 200 au lieu de 100. Ce qui pourrait être la raison possible pour cela?vue/méthode Django appelé à plusieurs reprises sans appels réels

EDIT: Je suis désolé les gars, je accidentellement compris que toute méthode de python est appelé deux fois, je ne sais pas pourquoi, donc je vais décrire en détail. Je suis en train d'écrire un côté serveur à base de django, qui a des méthodes comme suit:

def index(request): 
    return HttpResponse("CREST Top Dir: " + PROJECT_ROOT) 

def server_setup(request): 
    try: 
     process = subprocess.check_output(BACKEND+"mainbgw setup " + str(NUM_USERS), shell=True,\ 
              stderr=subprocess.STDOUT) 

     for i in xrange(1,NUM_USERS+1): 
      print i 

Maintenant, ce qui se passe est quand je l'appelle la vue server_setup parfois, il exécute plus d'une fois. De même, si j'appelle index voir parfois server_setup est également appelé simultanément. Donc, le problème n'est pas avec xrange mais avec l'appel de méthode. Quelle pourrait être la raison de ce problème?

+0

Laissez-moi deviner, 'new_user = Utilisateur (...)' 'ou new_user.save()' 'augmente NUM_USERS'. – 101

Répondre

1

Vérifiez si NUM_USERS est 100.

for i in xrange(1,NUM_USERS+1): 

    print 'NUM_USERS:', NUM_USERS # check it 

    print i 
    private = RSA.generate(3072,Random.new().read) 
    public = private.publickey() 
    new_user = User(public_rsa=public.exportKey(), secret_rsa=private.exportKey()) 
    new_user.save() 
+0

J'ai codé en dur 'NUM_USERS = 100' donc oui c'est sûr 100. La boucle tourne de façon parfaite parfois mais la plupart du temps elle peut juste dépasser. – bawejakunal

+0

'pour i dans xrange (1 100 + 1):' fonctionne bien? – letiantian

+1

Essayez cette réponse. La seule façon de le faire est si 'NUM_USERS' n'est pas 100 pour commencer avec _ou_ il est modifié dans votre boucle. Ce code vérifie à la fois pour vous. – 101