日志
1

web.py serve static files in gunicorn

web.py 与 gunicorn配合, 静态文件解析。

web.py的应用部署

1. 在开发环境下,一般直接 python code.py 1234 就会启动一个http server监听在1234这个端口上,这时,无论是静态文件,还是动态请求,都是由python直接处理的。

例如 code.py 一般如下所示:

....
app = web.application(urls, globals())
if __name__ == '__main__':
    app.run()

2. 在生产环境下,一个经典的部署方式就是:nginx + uWsgi + web.py

其中 nginx可以使用lighttpd、apache等代替,uWsgi可以使用 gunicorn,mod_wsgi等代替。

注意,static/目录下面的js,css,images 等静态文件,我们一般都是直接使用nginx来处理,对于剩下的动态请求,再upstream到后端的python来处理。

对于这种正常情况,那么,code.py 一般如下所示:

....
app = web.application(urls, globals())
application = app.wsgifunc()

然而,在某种特殊的情况下(比如nginx的配置,我们控制不了),static/目录下面的静态文件,不得不使用python来解析,这时,code.py 必须如下所示:

....
app = web.application(urls, globals())

from web.httpserver import StaticMiddleware
application = app.wsgifunc(StaticMiddleware)

也就是说,必须要使用StaticMiddleware这个中间件,否则static文件会404

gunicorn一般用类似如下命令启动:

gunicorn code:application --error-logfile=./error.log

One thought on “web.py serve static files in gunicorn

  1. Pingback: web.py serve static files in gunicorn | THE ERA OF G

发表评论