导致挂起的Python套接字
问题描述:
偶尔在套接字上发送/接收突发时,我的python App挂起。 缺少什么我在这里:似乎基本:导致挂起的Python套接字
skt.send(packet)
和
skt.recv_into(pkt)
如果将通话后睡眠(0.2),然后正常工作。
我应该改为select()与套接字对话的方式吗? 我试过2.7至3.3这似乎是更好的,但仍然会发生。
这个插座设置为:
skt = socket(AF_INET, SOCK_STREAM)
skt.connect((ipAddress, nwPort))
答
有远的信息太少告诉。我不认为这是一个挂起,而是因为数据尚未存在,所以当您读取数据时,可能会出现睡眠暂挂数据(您可以使用MSG_DONTWAIT或setblocking或其他检查如select进行禁用)。如果您知道它已发送,则可能出现各种网络延迟,特别是可以使用TCP_NODELAY禁用的Nagle's algorithm。如果您希望程序具有响应性,您通常应该使用select或poll - 请注意,对于像TCP这样的流协议,如果您不知道提前到达的确切大小,则需要将其与非阻塞行为相结合。