如何检测Python中的gRPC服务器绑定失败?

问题描述:

在Python中,当运行server.start()如果一个端口无法绑定我得到一个错误消息stderr ---但在Python中没有例外。如何检测Python中的gRPC服务器绑定失败?

我们如何以编程方式检测Python中gRPC服务器中的绑定错误?

实例错误消息:

E1020 09:26:44.299467934 4160 server_chttp2.c:38]   {"created":"@1508506004.299423794","description":"No address added out of total 1 resolved","file":"src/core/ext/transport/chttp2/server/chttp2_server.c","file_line":245,"referenced_errors":[{"created":"@1508506004.299421071","description":"Failed to add any wildcard listeners","file":"src/core/lib/iomgr/tcp_server_posix.c","file_line":338,"referenced_errors":[{"created":"@1508506004.299410944","description":"Unable to configure socket","fd":4,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.c","file_line":200,"referenced_errors":[{"created":"@1508506004.299407382","description":"OS Error","errno":98,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.c","file_line":173,"os_error":"Address already in use","syscall":"bind"}]},{"created":"@1508506004.299419953","description":"Unable to configure socket","fd":4,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.c","file_line":200,"referenced_errors":[{"created":"@1508506004.299417439","description":"OS Error","errno":98,"file":"src/core/lib/iomgr/tcp_server_utils_posix_common.c","file_line":173,"os_error":"Address already in use","syscall":"bind"}]}]}]} 

我相信the port number returned will be 0,但因为你提出这个问题的一个例外可能会更好。 I've filed issue 13096 to make this more clear.