msyz999明仕亚洲官网文娱django Model 并发写数据呈现反复值

view视图代码:

@login_required
def datarequest, page, keyword,strEncode:
    current_username = request.user
    data_s = dosomething #花费比较长的工夫
    if not UserRecord.objects.filteruser=User.objects.getusername=current_username,MyRecords=keyword:
            UserRecord.objects.createuser=User.objects.getusername=current_username,MyRecords=keyword
 
    return JsonResponsedata_s, safe=False
    

模型代码:

class UserRecordmodels.Model:
    user = models.ForeignKeyUser
    MyRecords = models.CharFieldmax_length=128
    
    def __unicode__self:
        return self.user.username
        
        

如今我反复央求(快速,无间隔)5次http://127.0.0.1:8000/1/test/…(类似多线程并发),由于视图里面的dosomething函数会耗费比较长的工夫,5个央求会并发中断,由于是并发,数据库中会记录5个test值,本意只想记录一个,怎样处理这个题目?django有没有像线程锁一样的东西,或许临界区类似的?lock.acquire,lock.release?

django默许没有提供锁,你可以运用其他效力提供的锁效力,比如数据库的。
不过看你的需求可以有更复杂的做法:

  1. 设置MyRecords字段为unique
    MyRecords = models.CharFieldmax_length=128, unique=True

  2. 在create record时catch InterityError十分

    from django.db import IntegrityError

    try:

    UserRecord.objects.create
        user=User.objects.getusername=current_username, MyRecords=keyword
    

    except IntegrityError:

    pass
    

(看完/读完)这篇文章有何感想! msyz999明仕亚洲官网娱乐的分享…

发表评论

姓名 *
电子邮件 *
站点