zoukankan      html  css  js  c++  java
  • python ---解决高并发超卖问题

    使用redis 解决美多商城超卖的问题

    import redis

    r = redis.Redis(host='localhost', port=6379)

    #定义过载

    def limit_handler():

        """

        return True: 允许; False: 拒绝

        """

        amount_limit = 3  # 限制数量

        keyname = 'limit123'  # redis key name

        incr_amount = 1  # 每次增加数量

        # 判断key是否存在

        if not r.exists(keyname):

            # 为了方便测试,这里设置默认初始值为95

            # setnx可以防止并发时多次设置key

            r.setnx(keyname, 0)

        # 数据插入后再判断是否大于限制数

        if r.incrby(keyname, incr_amount) <= amount_limit:

            return True

        return False

    #定义秒杀接口

    def miaosha(request):

        res_one = News.objects.get(pk=1)

        if limit_handler():

        #if res_one.pd > 0:

            time.sleep(5)

            # res_one.pd = res_one.pd - 1

            # res_one.save()

            with connection.cursor() as c:

                c.execute(' update news set pd = pd - 1 where id = 1 ')

            return HttpResponse('ok')

        else:

            return HttpResponse('没有了')

  • 相关阅读:
    SDN第二次作业
    SDN第一次上机作业
    SDN第一次作业
    alpha冲刺第四天
    alpha冲刺第二天
    alpha冲刺第一天
    项目需求分析
    结对第二次作业
    团队选题报告(i know)
    结对作业——原型设计
  • 原文地址:https://www.cnblogs.com/weifeng-888/p/10706412.html
Copyright © 2011-2022 走看看