首先需要一个测试环境来进行跑高并发的问题。 我是使用python3+django 2.0+mysql去写这个测试环境 一开始,我是打算直接简单粗暴,直接往数据库生成数据 def ceshi(request): name = request.GET.get('name') ceshi.objects.create(name=name) return HttpResponse("写入成功") 但是使用bp跑了很久才发现,没有少增多增数据。 于是就直接写了个复杂一点,按照商城的功能去写 views.py我写了三个功能,一个是购买的功能,一个返回订单的ID,一个是删除订单。 #models.py from django.db import models # Create your models here. class order(models.Model): name = models.CharField(max_length=100) price = models.IntegerField() class userinfo(models.Model): money = models.IntegerField() class dingdan(models.Model): buyer = models.ForeignKey(userinfo,on_delete=models.CASCADE) lists = models.CharField(max_length=100) #views.py from django.shortcuts import render,HttpResponse from django.http import JsonResponse from .models import * # Create your views here. import requests import uuid def buy_order(request): name = request.GET.get('name') price = order.objects.get(name=name).price money = userinfo.objects.get(id=1).money userinfo.objects.filter(id=1).update(money=money-price) dingdan.objects.create(buyer_id=1,lists=uuid.uuid1()) return HttpResponse("购买成功") def show_order(request): t = [] ids = dingdan.objects.all() for i in ids: t.append({'id':i.id}) return JsonResponse(t,safe=False) def del_order(request): r = requests.get(url='http://127.0.0.1:8000/show_order/') for i in r.json(): money = userinfo.objects.get(id=1).money userinfo.objects.filter(id=1).update(money=money+1) dingdan.objects.get(id=i['id']).delete() return HttpResponse("删除成功") #urls.py from django.contrib import admin from django.urls import path from app.views import * urlpatterns = [ path('admin/', admin.site.urls), path('buy/',buy_order), path('show_order/',show_order), path('del_order/',del_order), ] 在这里面我没有设置用户,主要写的太复杂了,我在数据库设置一个商品的名字和价格,设置一个用户的金钱,方便用来购买和统计最后是否添加或减少金钱。 设置初始值10w 商品名称 此时,是没有订单的 我们使用bp来跑一下,这里需要开两个爆破器,一个是购买,一个是删除 emmm,跑出来了 并发测试脚本 import requests from threading import Thread def get1(): r = requests.get(url="http://192.168.199.132:8000/buy/?name=test") print(r.text) def get2(): r = requests.get(url="http://192.168.199.132:8000/del_order/") print(r.text) while True: ts1 = [Thread(target=get1) for i in range(1,10)] ts2 = [Thread(target=get2) for i in range(1,10)] for t in ts1: t.start() for t in ts1: t.join() for t in ts2: t.start() for t in ts2: t.join()