2015-02-11 15 views
2

我观察到一些罕见的行为与asyncio/Python3.4/Windows7其中asyncio.streams.StreamReader.read(byte_count)读取少于byte_count字节。我无法可靠地重现该行为,但具有足够的网络活动(读取1000次),我可能会看到它一次方法asyncio.streams.StreamReader.read(byte_count)读取的字节太少

的文档read(byte_count)说:Read up to n bytes.

编号:https://docs.python.org/3/library/asyncio-stream.html#streamreader

的英文词组 “达” 表示它有时会读以下(!)。正如我最初理解协程的行为:它将不会返回,直到收到预期的字节数。

  1. 我理解read(byte_count)是否正确?
  2. 有没有其他人观察到这种相同的行为?

我目前的解决方法是检查收到的字节数。如果不完整,请再次拨打read(byte_count)并留下剩余的字节数。 (但这似乎打败了read(byte_count)的目的。)

回答

2

是的,你理解正确:read(n)可能会返回小于n。这很正常,你应该重复阅读,直到由于EOF或某些错误而无法获得更多字节。

相关问题