fix: 优化safe_get_or_create以处理并发2

This commit is contained in:
caoqianming 2024-12-30 14:28:38 +08:00
parent 28c72e01b9
commit 446714bf00
1 changed files with 2 additions and 1 deletions

View File

@ -114,7 +114,7 @@ class BaseModel(models.Model):
@classmethod @classmethod
def safe_get_or_create(cls, defaults=None, **kwargs): def safe_get_or_create(cls, defaults=None, **kwargs):
defaults = defaults or {} defaults = defaults or {}
with transaction.atomic(): with transaction.atomic():
try: try:
ins = cls.objects.select_for_update().get(**kwargs) ins = cls.objects.select_for_update().get(**kwargs)
@ -128,6 +128,7 @@ class BaseModel(models.Model):
except cls.DoesNotExist: except cls.DoesNotExist:
pass pass
raise raise
return ins, True
def handle_parent(self): def handle_parent(self):
pass pass