用Gunicorn部署Flask&Django, since 2022-04-06

用Gunicorn部署Flask&Django, since 2022-04-06,第1张

(20220406 Wed)
注:Nginx+Gunicorn+web framework是完整的部署流程,本文只介绍用Gunicorn部署web framework的流程作为alternative。

Gunicorn是Python WSGI >

这是一篇教使用python和flask框架来部署最基本的后端服务的文章,适用于想用python开发后台程序的同学。阅读这篇文章需要python和flask的基本知识,以及构建后台程序所需要的网络常识。
文章中出现的概念可以看另一篇入门文章。
所需工具:
python34
flask
nginx
gunicorn
supervisor

系统环境:
Ubuntu 1404LTS

我们先写一个最基本的flask应用:

demopy

from flask import Flask app = Flask(name) @approute('\') def index(): return 'Hello World'
if __name__ == __main__: apprun()
运行这个py文件,打开浏览器访问127001:5000就能看到显示Hello World的页面
如果让这个flask引用监听来自公网ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真q上生产环境的时候能按要求运行。

flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。

配置完后,通过命令’/usr/local/bin/gunicorn -b127001:5000‘启动应用。打开浏览器访问127001:5000,同样能够得到返回页面

然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。

Ubuntu下安装nginx可以用命令

sudo apt-get install nginx

安装后需要进行下配置:

cd /etc/nginx/sites-available

sudo vi test    (test为配置名称,可以根据自己项目进行命名)

test文件的配置为:
server {
listen 80; # 监听80端口
location / {
proxy_pass >

cd

cd sites-enable

sudo ln -s /sites-available/lwhile  (创建软链接,别漏掉最后的)

sudo service nginx reload

sudo service nginx restart

这样nginx的基本配置文件就写好了 接下来我们配置进程管理工具supervisor supervisor可以在后面启动你的python进程,这样很方便
1cd /etc/supervisor/confd

2sudo vi testconf (test为文件名)

[program:test]
command = /usr/local/bin/gunicorn -b127001:5000 /home/ubuntu/myproject/testpy

3sudo supervisorctl

4reload

5start test

如果一切正常,做完这所有步骤之后,现在公网的ip访问你的主机,就可以打开你的flask应用了


其实源码分析很难写好,关键要自己去阅读
先写一个测试程序

ctrl+左键点击进request源码

可以看到request是_request_ctx_stacktop的一个request属性。同时,_request_ctx_stack是一个全局对象。
那么什么时候会产生_request_ctx_stacktop对象呢,在处理请求前会构造并且赋值进去。

在RequestContext的push方法,有

此语句将RequestContextpush进_request_ctx_stack,这个语句所在的push函数会在处理请求前会构造并且赋值进去。

每一次ajax请求都建立新的tcp连接,flask dev版本的server是>通过 Python 调用 Shell 脚本去执行 Nginx Log 的相关命令,然后进行处理再请求 Requests 库来向后端定义好的接口来推送数据并展示。
这部分主要分为以下两块内容:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13440541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-06
下一篇 2023-08-06

发表评论

登录后才能评论

评论列表(0条)

保存