import json import pytz import resource from redis.asyncio import Redis from datetime import datetime, timedelta def redis_qpush(redis_client, qname: str, data: dict, max_len: int = 30): """向队列右侧推入数据,并限制队列最大长度""" data_string = json.dumps(data) pipe = redis_client.pipeline() pipe.rpush(qname, data_string) pipe.ltrim(qname, -max_len, -1) # 只保留右侧 max_len 个元素 pipe.execute() def redis_qpop(redis_client, qname:str, timeout: int = 5): message = redis_client.blpop(qname, timeout=timeout) if message is None: return None # 队列为空,直接返回 message_string = message[1] data = json.loads(message_string) return data