Redis锁获取失败:程序持续运行却始终无法获取锁
解决aioredis锁无法获取的问题
针对你遇到的async with redis.lock("hello_lock")卡住的情况,按以下步骤排查:
检查锁是否被残留持有
直接用Redis命令行工具确认锁状态:redis-cli EXISTS hello_lock如果返回
1,说明锁被其他进程/残留会话持有,手动删除锁重试:redis-cli DEL hello_lock显式设置锁超时时间
避免因异常崩溃导致锁永久残留,创建锁时指定超时(单位秒),确保锁会自动释放:async with redis.lock("hello_lock", timeout=10) as lock: print("hello") await redis.hset("hello", "1", "2")验证Redis连接有效性
在获取锁前先测试连接是否正常,排除连接池异常:# 在创建redis实例后添加 await redis.ping() print("Redis连接正常")排查其他持有锁的进程
检查是否有其他服务、脚本或同一程序的其他实例正在持有hello_lock,未正常释放锁(比如未通过上下文管理器退出、进程崩溃未触发锁释放)。
内容的提问来源于stack exchange,提问作者3awny
相关产品推荐
相关产品推荐

