我正在使用以下的PLone + urllib代码通过BrowserView代理响应另一个服务器的请求。
req = urllib2.Request(full_url)
我的问题是如何使这个函数不会阻塞并在第一个字节到达时立即通过Zope开始流式传输代理响应?当使用接口、对象或模式制作可流式化的Zope响应时呢?
req = urllib2.Request(full_url)
try:
# Important or if the remote server is slow
# all our web server threads get stuck here
# But this is UGLY as Python does not provide per-thread
# or per-socket timeouts thru urllib
orignal_timeout = socket.getdefaulttimeout()
try:
socket.setdefaulttimeout(10)
response = urllib2.urlopen(req)
finally:
# restore orignal timeoout
socket.setdefaulttimeout(orignal_timeout)
# XXX: How to stream respone through Zope
# AFAIK - we cannot do it currently
return response.read()
我的问题是如何使这个函数不会阻塞并在第一个字节到达时立即通过Zope开始流式传输代理响应?当使用接口、对象或模式制作可流式化的Zope响应时呢?