[commands] Only clean semaphore when there are no waiters
This commit is contained in:
parent
733962df12
commit
e21d49c980
@ -197,6 +197,9 @@ class _Semaphore:
|
|||||||
def locked(self):
|
def locked(self):
|
||||||
return self.value == 0
|
return self.value == 0
|
||||||
|
|
||||||
|
def is_active(self):
|
||||||
|
return len(self._waiters) > 0
|
||||||
|
|
||||||
def wake_up(self):
|
def wake_up(self):
|
||||||
while self._waiters:
|
while self._waiters:
|
||||||
future = self._waiters.popleft()
|
future = self._waiters.popleft()
|
||||||
@ -276,5 +279,5 @@ class MaxConcurrency:
|
|||||||
else:
|
else:
|
||||||
sem.release()
|
sem.release()
|
||||||
|
|
||||||
if sem.value >= self.number:
|
if sem.value >= self.number and not sem.is_active():
|
||||||
del self._mapping[key]
|
del self._mapping[key]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user