我正在使用Python的BaseHTTPRequestHandler类来构建Web服务器。我想为WebSockets添加一个端点。这意味着我需要读取处理程序的rfile中的任何内容,以便我可以逐个处理消息,因为我正在接收消息(而不必读取while输入)。我试着使用'read'的不同组合(例如,用一个大的缓冲区,如果数据较少,它会返回较早的数据;没有参数,但它只是意味着要读取直到EOF ),但无法得到这个工作。Python,BaseHTTPRequestHandler:如何从套接字读取文件中可用的内容?
我能想到的两种解决方案:
调用阅读(1):由一个要读取的字节之一。我宁愿不这样做,因为我不确定缓冲语义是什么(例如,我不希望读取每个字节的系统调用)。
要暂时使文件非阻塞,然后尝试读取大块数据,然后使其阻塞,然后尝试读取1个字节。这似乎相当混乱。我能想到的另一个选择是只使用非阻塞套接字,但对于我当前的线程框架来说,这看起来效果不太好。
任何想法如何获取读取返回任何可用的数据?