Тесты параллелизма в Django
Только начал изучать Django в прошлом месяце. Мне нужна помощь в проведении тестов на параллельность в Django, поэтому я попытался написать код, который предотвратит проблемы, возникающие из-за отсутствия параллельности, но я не знаю, как проверить и протестировать код, чтобы убедиться, что он соответствует моим ожиданиям. Я хочу отправить несколько запросов одновременно, чтобы проверить, работает ли код так, как ожидается.
Целевая функция в файле views.py
def buy_animal(request):
context = {}
if request.method == 'POST':
form = buys_animal(request.POST)
if form.is_valid() == True or form.is_valid() == False:
#return HttpResponse('asdasd')
nm = request.POST['an_name']
b = Animal.objects.filter(an_name = nm)
#return HttpResponse("yo ")
#nm = request.POST['an_name']
qt = int(request.POST['qty'])
if b.count() <= 0:
return HttpResponse(str(b.count()) + " Sorry we're out of animals")
else:
try:
with transaction.atomic():
b.select_for_update()
b = b[0]
#b.an_name = 'asd'
#b.save()
with transaction.atomic():
Quality.objects.filter( animal = Animal.objects.filter(an_name = 'ringneck')[0] ).select_for_update()
c = Quality.objects.filter( animal = Animal.objects.filter(an_name = 'ringneck')[0] )[0]
c.rating = 'niece'
c.save()
except:
return HttpResponse('lock in use')
if b.qty - qt < 0:
return HttpResponse("Sorry we don't have enough animals")
else:
b.qty = b.qty - qt
b.save()
a = Buy_animal( an_name = nm, qty = qt,
buyer = MyUser.objects.filter(username = request.user.username)[0] )
a.save()
return HttpResponse('animal bought')
else :
form = buys_animal()
context = {}
context = {'form' : form}
return render(request, "buy_animal_form.html", context)
else :
form = buys_animal()
context = {}
context = {'form' : form}
return render(request, "buy_animal_form.html", context)
Мой код models.py можно найти в репозитории ниже
https://bitbucket.org/mab_786/django_models_code/src/master/models.py
`
Прошу не обращать внимания на любые глупые ошибки с моей стороны, так как я только начал работать с django. Заранее спасибо. Я был бы очень признателен, если бы кто-нибудь поделился кодом tests.py для проверки такой ситуации. Я написал этот код не как часть какого-либо проекта, а для того, чтобы прояснить свои понятия