2020-04-01 基于 Flask+Gunicorn+Nginx 在 centos 部署实战
参考:Flask 应用如何部署
具体的流程在上述两个参考中已经有提到了,本人就提一些我自己的想法和看法好了。
首先是我想折腾的目的。就是为了使用 jieba 分词来开发一个分词 api,为此需要学习一下 python 如何部署服务器。
因此,在百度之后选择了Flask这个框架,可以说是非常好用了,借助装饰器可以非常方便的写出服务器后台。
下面看一个最简单的 flask 案例。
1 | from flask import Flask, abort, request |
运行之后,打开浏览器直接访问 8080 就能看见一个 hello world 了。
下面来看一个稍复杂的案例,如果理解了那么就能写出服务器后台了。
1 | from flask import Flask, abort, request |
一个一个来说吧。
首先是 app.route 这个装饰器。就是负责将路由挂载上去的。只要给一个函数添加这个装饰器,那就是一个路由了。而后面的参数 methods 则是指定了响应的方法,默认就是 GET。注意这里的方法名都要大写。
接下来是 request 对象。这个对象有着多个字段。重要的就是 request.form、request.json、request.args。在 get 方法中只有 request.args。args 中存放解析成字典对象的查询字符串,也就是 URL 中?后面的部分。
例如http://127.0.0.1:8080/test?msg=abc
就会解析成{'msg':'abc'}
。类似的,在 post 请求中,如果是表单格式的数据,会被解析到 form 中,如果是 json 格式,则会解析到 request.json 中。
在这里稍微注意一个细节,在 args 和 form 中所有的值都是字符串类型的,而 json 中则会按照 js 对象和 python 的数据类型互相转换。
接下来就是 gunicorn 使用了,直接pip install gunicorn
安装即可
然后 cd 到脚本目录,执行gunicorn -w 2 -b :8080 app:app
。注意 app:app,前一个 app 是你要运行的脚本的名称,自己修改下命令行即可。
具体参数就不解释了,看 gunicorn 文档即可,只要顺利运行起来就已经完成了。
现在,一个 python 服务器就已经完成了。对于流量很小的情况,这也可以直接使用了。
不过在生产环境中,出于多方面的考虑,还是会在外面套一层 nginx 的转发,也是便于负载均衡和自动容灾。
简单的案例如下。
1 | server { |
更多配置自己搜一下即可
本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/4b6ecb36.html
版权声明:转载请注明出处!