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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐