当asyncio.StreamReader.read()调用时,会出现哪种类型的错误?

时间:2018-05-12 08:53:14

标签: python-3.x error-handling exception-handling python-asyncio

现在我使用asyncio创建TCP服务器。

我想在我的代码中添加异常错误处理。 (如下所示)

    try:
        data = await reader.read(SERVER_IO_BUFFER_SIZE)
    except SomeError:
        #error handle

所以,我看一下asyncio官方文档。

但我无法找到有关可能发生的错误的任何信息。

(链接:https://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.read

如何获取可能出现的错误信息?

1 个答案:

答案 0 :(得分:1)

可能发生的确切错误取决于StreamReader后面的流的类型。与套接字通信的实现将引发IOError,而从数据库读取数据的实现可能会引发一些特定于数据库的错误。

如果您正在处理网络,例如通过asyncio.open_connectionasyncio.start_server,您可以期待IOError及其子类的实例。换句话说,请使用except IOError as e

此外,如果协程被取消,您可以在任何asyncio.CancelledError获得await。您可能不希望处理该异常 - 只是让它传播,并确保使用适当的finally子句或with上下文管理器来确保清理。 (无论CancelledError如何,最后一部分都是个好主意。)