【gunicorn】gunicorn基本使用
Gunicorn
gunicorn是一个基于python的Web Servers Gateway Interface for unix; 就是web 服务器端接收请求和python app 应用的一个桥梁;
如果不用gunicorn,只是使用Flask,对于大量和同时的请求,就会奔溃和出现错误;而gunicorn就是对于大量高并发的请求,能够实现请求到达服务器,以及作出相应,并能根据负载需求,及时增大/减少worker,做到管理协调的作用。
基本介绍
gunicorn是启动app程序的一种方式,不同于直接在main文件中启动app程序,这样更方便与管理;
三种启动方式:
workers模式
每个worker都是一个加载python应用程序的UNIX进程 worker之间没有共享内存
建议workers 数量是
(2*CPU) + 1
;多线程模式
gunicorn 还允许每个worker拥有多个线程,在这种模式下,每个worker都会加载一次,同一个worker生成的每个线程共享相同的内存空间,使用threads模式,每一次使用threads模式,worker类就会是gthread;
gunicorn -w 5 --threads=2 main:app #等同于 gunicorn -w 5 --thread=2 --worker-class=gthread main:app
伪线程 gevent (协程)
gunicorn --worker-class=gevent --worker-connections=1000 -w 3 main:app
work-connections 是对gevent worker类的特殊设置;建议workers数量仍然是
(2*CPU) + 1
;在这种情况下,最大的并发请求数 是3000(3个worker * 1000连接/worker).
基本使用
使用配置文件方式启动
gunicorn --config=config.py myapp.test:app
#myapp.test为文件,第二个指的是flask应用的名字;
关闭gunicorn
pstree -ap|grep gunicorn #寻找masterpid
kill -HUP 9479 #重启Gunicorn任务
kill -9 9479 #退出gunicorn任务
gunicorn address used
如使用gunicorn启动,即不使用mian
启动,不需要在使用app.run()
;
#gunicorn 启动
if __name__ != '__main__':#日志的绑定gunicorn_logger = logging.getLogger(‘gunicorn.error’)#获得gunicorn的logger#将gunicorn的logger和flask app的logger绑定在一起app.logger.handlers = gunicorn_logger.handlers#将绑定的logger 的level设置成gunicorn logger的level, 因为最终输出的log level是在gunicorn中配置的app.logger.setLevel(gunicorn_logger.level)#启动分析任务crossline_t = threading.Thread(target=crossline_analyze.task_start)crossline_t.start()
- 退出gunicorn
根据pid文件中的pid号,来进行进程结束kill -QUIT pid kill -TERM pid
ref:
gunicorn 配置文件
gunicorn 文档
Gunicorn介绍与压测
gunicorn日志绑定
参考01
pid文件的作用
常见错误
No module named <module_name>" while running gunicorn
在gunicorn中无法找到celery,通过查看which gunicorn
可知默认调用的是local下的gunicorn;卸载重新在安装了celery的虚拟环境下安装gunicorn;
在使用时,需要指明gunicorn在虚拟环境下的具体位置;
若出现bad interpreter
错误,需要进行bin/gunicorn
中,编辑首行的python解释器路径;
将虚拟环境下的gunicorn软链接至local路径下,则使用时无须指明具体路径;gunicorn.errors.HaltServer
在启动时加上--preload
可显示具体错误;
【gunicorn】gunicorn基本使用相关推荐
- python diango 并发_利用gunicorn提高django的并发能力
引言 手头上的项目有一些采用django框架编写, 如果说并发量比较小的时候简单的runserver是可以应对的. 那么当并发达到一两千的时候,该怎么提高django的并发能力呢? Overview ...
- python flask gunicorn nginx 部署
WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议.WSGI协议就是用来统一这两者的接口的. ...
- 【Gunicorn】gunicorn配置文件详解
python常见的web部署搭配nginx+gunicorn,下面记录一下gunicorn的配置使用. 安装gunicorn pip install gunicorn gunicorn -h # 查看 ...
- 使用uwsgi和gunicorn部署Django项目
https://uwsgi-docs.readthedocs.io/en/latest/Management.html https://uwsgi-docs.readthedocs.io/en/lat ...
- 利用flask写的接口(base64, 二进制, 上传视频流)+异步+gunicorn部署Flask服务+多gpu卡部署
一.flask写的接口 1.1 manage.py启动服务(发送图片base64版) 这里要注意的是用docker的话,记得端口映射 #coding:utf-8 import base64 impor ...
- Flask 应用部署方式之 Flask+Gunicorn+Nginx
1. Why Flask+Gunicorn+Nginx Flask+Gunicorn+Nginx是最常用的Flask部署方案,大家深究过为何用这样的搭配么? 1.1 Why? Flask 是一个web ...
- supervisor+gunicorn部署python web项目
有了Nginx,对于Tomcat没有必要详细了解. 有了supervisor,再也没有必要把一个程序设置成服务.驻留进程,supervisor真是一个相见恨晚的好工具. 在Tomcat中,所有的web ...
- python之gunicorn的配置
python常见的web部署搭配nginx+gunicorn,下面记录一下gunicorn的配置使用. 安装gunicorn pip install gunicorn gunicorn -h # 查看 ...
- 江在川上曰:云服务器上的flask项目部署(Ubuntu+Flask+Gunicorn+Supervisor+Nginx+Anaconda)
云服务器上的flask项目部署(anaconda.python.flask等相关安装) 在探索未知的路上走了很多弯路,这里记载了我在阿里云上部署项目切实可行的步骤,当然问题因人而异,没有四海皆适用的准 ...
- gunicorn 详解
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server. 和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点. gunicorn 安装 ...
最新文章
- 关于山东大学(威海)全向组海韵三队提交的 RT-Thread 技术报告中的若干疑点
- Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现 - aspirant - 博客园
- 彻底理解被称为二叉树神级遍历的莫里斯(Morris)算法
- Eureka学习笔记001--Eureka概念和源码分析
- 无穷级数判敛方法使用限制
- AutoSar软件文档阅读
- 计算机如何建立小型服务器,如何将个人PC搭建成小型服务器
- vc 写一个计算机功能,VC++的一个实例
- qt quick-QML虚拟软键盘V2版本(手机键盘弹出机制)-支持换肤、动态加载移除语言
- 文科如何晋级计算机职称,职称的档次是怎么确定来的?
- php file_get_contents 失效,phpfile_get_contents返回空无效解决办法_PHP教程
- 【数模/预测】灰色预测
- 「中国好SaaS」报名进行中!「面基」买方关键决策人
- 计算机的字长一定是字节的整数倍,大学计算机应用基础选择题一.doc
- stm32l151 ADC通过DMA通道定时采样电池电量
- fastTEXT入门自然语言处理NLP
- 叠积木/银河系英雄传说[NOI2002]题解
- 灵魂拷问:为什么 Java 字符串是不可变的?
- 迅为iMX6UL开发板驱动-PWM测试方法
- tflearn教程_环境部署——Windows下安装配置tensorflow和tflearn