Projet

Général

Profil

0001-utils-augment-default-retries-in-safe_get_or_create-.patch

Benjamin Dauvergne, 13 janvier 2022 23:08

Télécharger (1,36 ko)

Voir les différences:

Subject: [PATCH 1/2] utils: augment default retries in safe_get_or_create
 (#60645)

 src/authentic2/utils/models.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
src/authentic2/utils/models.py
27 27
    return -math.log(1.0 - random.random()) / frequency
28 28

  
29 29

  
30
SAFE_GET_OR_CREATE_RETRIES = 3
30
SAFE_GET_OR_CREATE_RETRIES = 100
31 31

  
32 32

  
33 33
class ConcurrencyError(Exception):
34 34
    pass
35 35

  
36 36

  
37
def safe_get_or_create(model, defaults=None, **kwargs):
37
def safe_get_or_create(model, defaults=None, retries=None, **kwargs):
38 38
    assert (
39 39
        getattr(settings, 'TESTING', False) or not connection.in_atomic_block
40 40
    ), 'safe_get_or_create cannot be used in inside a transaction'
41 41

  
42 42
    defaults = defaults or {}
43 43
    exception = None
44
    for dummy in range(SAFE_GET_OR_CREATE_RETRIES):
44
    for dummy in range(retries or SAFE_GET_OR_CREATE_RETRIES):
45 45
        try:
46 46
            instance, created = model.objects.get_or_create(defaults=defaults, **kwargs)
47 47
        except model.MultipleObjectsReturned as e:
48
-