mirror of
https://github.com/tubearchivist/tubearchivist.git
synced 2024-11-16 16:50:12 +00:00
better att to queue, track score
This commit is contained in:
parent
86d157699a
commit
6ab70c7602
@ -127,11 +127,25 @@ class RedisQueue(RedisBase):
|
||||
|
||||
return False
|
||||
|
||||
def add(self, to_add: str) -> None:
|
||||
"""add single item to queue"""
|
||||
next_score = self._get_next_score()
|
||||
self.conn.zadd(self.key, {to_add: next_score})
|
||||
|
||||
def add_list(self, to_add: list) -> None:
|
||||
"""add list to queue"""
|
||||
mapping = {i: "+inf" for i in to_add}
|
||||
next_score = self._get_next_score()
|
||||
mapping = {i[1]: next_score + i[0] for i in enumerate(to_add)}
|
||||
self.conn.zadd(self.key, mapping)
|
||||
|
||||
def _get_next_score(self) -> float:
|
||||
"""get next score in queue to append"""
|
||||
last = self.conn.zrange(self.key, -1, -1, withscores=True)
|
||||
if not last:
|
||||
return 0.0
|
||||
|
||||
return last[0][1] + 1
|
||||
|
||||
def get_next(self) -> str | bool:
|
||||
"""return next element in the queue, if available"""
|
||||
result = self.conn.zpopmin(self.key)
|
||||
|
Loading…
Reference in New Issue
Block a user