如何确定http消息结束?

时间:2016-03-18 09:22:34

标签: python sockets http

我需要用python套接字类编写简单的http缓存代理(不使用SimpleHTTPServer类)。简单的方案是:

-open socket
-get http message
-check if we have cached resource
-either provide cached resource or re-request it from remote server
-close socket

获取消息时,我使用同步recv方法:

38                 message = ""
39                 BUF_SIZE = 4096
40                 while 1:
41                         chunk = connection.recv(BUF_SIZE)
42                         if None == chunk or 0 == len(chunk):
43                                 break
44                         message += chunk
45                         print "rec %i" % (len(message))

当我使用浏览器连接到我的代理时,浏览器将保持套接字打开,直到它得到响应或我手动取消等待,这完全取决于HTTP的工作方式。所以,我的控制权一直停留在recv。

- 我不能只读1000bytes,因为我不知道实际消息有多大?在http?

中似乎没有任何消息结束标记

- 使用同步读取时,程序无法继续打开套接字;

- 我可以使用线程或某种异步api来解决控制阻塞问题,但这并不能解决问题,无法理解何时停止读取请求并开始处理它。

0 个答案:

没有答案