lundi 9 février 2015

Managing simultaneous requests in django

I am quite new to web development. Right now, when two users request the same page (for each, it calculates something for 2 seconds), it gives weird errors. Here is how my view looks like.



def mira_cacl(request):

if request.GET["ind"] == "None" and request.GET["div"] == "None":
return HttpResponse("Please, specify a division or an industry.")

elif request.GET["ind"] != "None" and request.GET["div"] != "None":
return HttpResponse("Please, specify a division OR an industry but not both.")

elif request.GET["ind"] != "None":

mira = Mira()
a = mira.get_shock_effects(request.GET["shock"], request.GET["ind"], "Industry")

else:
mira = Mira()
print(request.GET["div"])
a = mira.get_shock_effects(request.GET["shock"], request.GET["div"], "division")

context={"chains": a}
return render(request, 'manageDb/result.html', context)


When I request the same page on 2 devices simultaneously, they share the object a for some reason. It isn't a global object, isn't it?


Generally, how do you solve such problems in web development?


Also, how does django manage simultaneous requests internally? Does it use threads?


EDIT: mira.get_shock_effects(request.GET["shock"], request.GET["ind"], "Industry") returns a dictionary.


When I run it simultaneously, in both requests, a becomes the same for some reason.





Aucun commentaire:

Enregistrer un commentaire