[commands] Only clean semaphore when there are no waiters

This commit is contained in:
Rapptz 2020-01-21 19:50:37 -05:00
parent 733962df12
commit e21d49c980

View File

@ -197,6 +197,9 @@ class _Semaphore:
def locked(self):
return self.value == 0
def is_active(self):
return len(self._waiters) > 0
def wake_up(self):
while self._waiters:
future = self._waiters.popleft()
@ -276,5 +279,5 @@ class MaxConcurrency:
else:
sem.release()
if sem.value >= self.number:
if sem.value >= self.number and not sem.is_active():
del self._mapping[key]