def hash_redis():
    redis_info = {
        "host": "127.9.9.1",
        "port": 6379,
        "db": 10
    }
    msg_dict = get_news()
    # 连接redis,可以在连接时直接添加 decode_responses=True,这样在输入结果的时候直接是 str 类型,而不是 byte 类型
    r = redis.Redis(**redis_info, decode_responses=True)
    for i in list(msg_dict.keys()):
        if not r.hexists("msg1", i):
            r.hset("msg1", i, msg_dict[i])
            logger.info(f"新闻:{i}-- 写入redis成功!")
        msg_dict.pop(i)
        logger.info(f"新闻: {i}-- 已经推送过了!")
    return msg_dict

解决办法: 将 for i in list(msg_dict.keys()) 改成 for i in msg_dict.keys

def hash_redis():
    redis_info = {
        "host": "127.0.0.1",
        "port": 6379,
        "db": 10
    }
    msg_dict = get_news()
    # 连接redis,可以在连接时直接添加 decode_responses=True,这样在输入结果的时候直接是 str 类型,而不是 byte 类型
    r = redis.Redis(**redis_info, decode_responses=True)
    for i in msg_dict:
        if not r.hexists("msg1", i):
            r.hset("msg1", i, msg_dict[i])
            logger.info(f"新闻:{i}-- 写入redis成功!")
        msg_dict.pop(i)
        logger.info(f"新闻: {i}-- 已经推送过了!")
    return msg_dict

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐