process_updates() don't lock globally, but only on unprocessed updates

This commit is contained in:
Laura Klünder 2017-11-10 23:23:22 +01:00
parent 4e9f34d4a0
commit e1d27b637c
3 changed files with 16 additions and 6 deletions

View file

@ -81,8 +81,8 @@ class MapUpdate(models.Model):
@classmethod
def process_updates(cls):
with cls.lock():
new_updates = tuple(cls.objects.filter(processed=False))
with transaction.atomic():
new_updates = tuple(cls.objects.filter(processed=False).select_for_update(nowait=True))
if not new_updates:
return ()