python - aioredis.Channel.wait_message() 抛出的异常是什么?
问题描述
我有一个如下的代码段,每次在抛出异常之前都能获得 6 条消息。但是,我无法确定引发了什么异常;我已经打印出“True outside”,所以看起来异常是在 wait_message() 中引发的,但是“except Exception as e”无法捕捉到它。有人可以帮忙吗?
redisS = await aioredis.create_connection(('localhost', 6379))
subCh = aioredis.Channel(self._redis, is_pattern=False)
await redisS.execute_pubsub('subscribe', subCh)
try:
while await subCh.wait_message():
try:
msg = await subCh.get()
for q in self._queues:
await q.put(msg)
except:
print('inside')
except aioredis.ChannelClosedError:
print(subCh.is_active)
print('ChannelClosedError')
except Exception as e:
print(subCh.is_active)
print(e)
except:
print(subCh.is_active)
print('outside')
解决方案
抱歉发帖,我已经得到答案了。起初,我尝试
except:
print(sys.exc_info()[0])
然后我得到了<class 'GeneratorExit'>。所以,我终于可以通过
except GeneratorExit:
print('caught you')
推荐阅读
- android - 如何使用引用父视图的资源?
- php - 如何修复Require_once(/google-api-php-client/src/Google/AccessToken/Verify.php):无法打开流
- c# - 如何使用 HTTP 触发的 Azure 函数删除 Azure 存储帐户
- node.js - 如何在 Google Cloud Functions 中使用把手?
- css - 之前和之后伪选择器在 chrome 中不起作用
- android - 改造对象格式定制
- swift - NSSplitViewItem.isCollapsed ignores animation durations
- javascript - 在分派之间检测到状态突变,在路径“...”中。这可能会导致不正确的行为
- eclipse - 在 Eclipse 中检查未处理的集合对象
- php - Laravel Echo join() 和 leave() 方法不会被触发