前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask基础学习之入坑出坑体验记录

Flask基础学习之入坑出坑体验记录

作者头像
全栈工程师修炼指南
发布2022-09-29 17:38:54
7660
发布2022-09-29 17:38:54
举报

[TOC]

0x00 问题解决

1.使用Flash原生的app.run运行一个简易的http服务用来提供接口,出现请勿在生产环境中使用开发服务器,使用生产WSGI服务器的提示。

错误信息: WARNING: Do not use the development server in a production environment. Use a production WSGI server

问题原因: 由于原生的 app.run(host="0.0.0.0", port=80) 只适用于开发模式,因为它是单线程的,生产环境影响性能,替代方案是可以用 uWSGI 或者 pywsgi。

代码语言:javascript
复制
# 三者区别
1.app.run 启动的是单线程服务,性能很低

2.pywsgi 服务器使用的是gevent的pywsgi模块,性能不错,配置也很简单,但是它只是把单线程改造成了单线程异步方式

3.uWSGI 性能最好,配置稍微比上面难一点,但是它是支持多进程、多线程、和多协程的方式,简直就是完美,所以我选择尝试使用uWSGI服务器来替代

解决办法: 从上面可知解决版本无非两种 pywsgiuWSGI.

  • pywsgi 模块方式
代码语言:javascript
复制
# 1.安装gevent模块
pip install gevent
# 2.在启动类里引入模块
from gevent import pywsgi
# 3.在main方法里将app.run替换
server = pywsgi.WSGIServer(('0.0.0.0', 80), app,)
server.serve_forever()
  • uWSGI 模块方式
代码语言:javascript
复制
# 1.安装uWSGI模块
pip install uwsgi

# 2.在根目录下创建uWSGI配置文件(uwsgi.ini)
tee uwsgi.ini <<'EOF'
[uwsgi]
# 地址端口
http = 0.0.0.0:80
# 项目路径
chdir = /root/projectname
# 项目启动文件
wsgi-file = manage.py
# 项目需要调用的启动类
callable = app
# 进程线程设置
processes = 4
threads = 10
# 日志文件
daemonize = /app/logs/uwsgi.log
# 保存主进程pid文件
pidfile = uwsgi.pid
# 是否需要主进程
master = true
EOF

# 3.相关指令
# 启动
uwsgi --ini uwsgi.ini
# 重新加载
uwsgi --reload uwsgi.pid
# 停止
uwsgi --stop uwsgi.pid

# 4.Flask 入口文件(示例,app 后面需要自行实现)
# manage.py
from app import create_app
app = create_app()

if __name_ == '__main__':
  app.run(host="0.0.0.0", port=80)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 问题解决
    • 1.使用Flash原生的app.run运行一个简易的http服务用来提供接口,出现请勿在生产环境中使用开发服务器,使用生产WSGI服务器的提示。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档