From 21974808310899e3cc80475d50833f1d6a1d9b5b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 29 Dec 2024 11:31:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96safe=5Fget=5For=5Fcre?= =?UTF-8?q?ate=E4=BB=A5=E5=A4=84=E7=90=86=E5=B9=B6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/models.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/utils/models.py b/apps/utils/models.py index efacf5a1..b9ff20cb 100755 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -114,10 +114,14 @@ class BaseModel(models.Model): @classmethod def safe_get_or_create(cls, **kwargs): defaults = kwargs.pop('defaults', {}) - try: - return cls.objects.get_or_create(defaults=defaults, **kwargs) - except IntegrityError: - return cls.objects.get(**kwargs), False + for attempt in range(5): + try: + return cls.objects.get_or_create(defaults=defaults, **kwargs) + except IntegrityError: + if attempt < 4: + time.sleep(0.1) + else: + raise def handle_parent(self): pass