Skip to content

Commit cab2131

Browse files
author
chanchiem
committed
Delete keys after iterating to prevent mutation during iter
1 parent 4f4b2df commit cab2131

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

expiringdict/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,17 @@ def __init__(self, max_len, max_age_seconds, items=None):
5858
def __len__(self):
5959
with self.lock:
6060
current_key = iter(self)
61+
keys_to_del = []
6162
for k in current_key:
6263
item = OrderedDict.__getitem__(self, k)
6364
time_added = item[1]
6465
item_age = time.time() - time_added
6566
if item_age > self.max_age:
66-
del self[k]
67+
keys_to_del.append(k)
6768
else:
6869
break
70+
for k in keys_to_del:
71+
del self[k]
6972

7073
return super(ExpiringDict, self).__len__()
7174

0 commit comments

Comments
 (0)