nginx和fastcgi部署web.py问题总结
部署方法,参见web.py的cookbook
1跳转web.seeother没有预期效果
如下面的代码,预期效果是实现跳转:
class SomePage:
def POST(self):
# Do some application logic here, and then:
raise web.seeother('/someotherpage')
但在这样部署的环境下就没有效果。 解决方法是,在启动fastcgi的命令前,运行以下命令:
export REAL_SCRIPT_NAME=""
2流传输文件,使用yield没有预期效果
使用流传输文件,如下面的代码,预期效果是一部分一部分的传输文件:
class count_down:
def GET(self,count):
# These headers make it work in browsers
web.header('Content-type','text/html')
web.header('Transfer-Encoding','chunked')
yield '<h2>Prepare for Launch!</h2>'
j = '<li>Liftoff in %s...</li>'
yield '<ul>'
count = int(count)
for i in range(count,0,-1):
out = j % i
time.sleep(1)
yield out
yield '</ul>'
time.sleep(1)
yield '<h1>Lift off</h1>'
但在这样部署的环境下就没有效果,文件还是一次就传完,而不是分步的。 解决方式,在nginx.conf中添加如下配置:
http{
......
fastcgi_buffering off;
......
}