我正在编写一个Python模块,它通过unix套接字与go程序进行通信.客户端(python模块)将数据写入套接字,服务器使用它们.
# Simplified version of the code used
outputStream = socket.socket(socketfamily, sockettype, protocol)
outputStream.connect(socketaddress)
outputStream.setblocking(True)
outputStream.sendall(message)
....
outputStream.close()
Run Code Online (Sandbox Code Playgroud)
我的问题是,在服务器有效读取数据之前,Python客户端倾向于完成并关闭套接字,从而导致服务器端的"管道损坏,连接重置".无论我做什么,对于Python代码,一切都已发送,因此对send()sendall()select()的调用都是成功的...
提前致谢
编辑:由于mac OS我无法使用关机
EDIT2:我也试图删除超时并调用setblocking(True),但它不会改变任何东西
编辑3:准备好这个问题后http://bugs.python.org/issue6774似乎文档是不必要的可怕所以我恢复了关机但我仍然有同样的问题:
# Simplified version of the code used
outputStream = socket.socket(socketfamily, sockettype, protocol)
outputStream.connect(socketaddress)
outputStream.settimeout(5)
outputStream.sendall(message)
....
outputStream.shutdown(socket.SHUT_WR)
outputStream.close()
Run Code Online (Sandbox Code Playgroud)