python Gunicorn服务器使用方法详解


Posted in Python onJuly 22, 2019

1. 简介

Gunicorn(Green Unicorn)是给Unix用的WSGI HTTP 服务器,它与不同的web框架是非常兼容的、易安装、轻、速度快。

python Gunicorn服务器使用方法详解

2. 示例代码1

def app(environ, start_response):
  data = b"Hello World\n"
  start_response("200 OK", [
    ("Content-Type", "test/plain"),
    ("Content-Length", str(len(data)))
  ])
  return iter([data])

启动

gunicorn -w 4 myapp:app

起来后显示

[2016-12-12 00:20:12 +0000] [11755] [INFO] Starting gunicorn 19.6.0
[2016-12-12 00:20:12 +0000] [11755] [INFO] Listening at: http://127.0.0.1:8000 (11755)
[2016-12-12 00:20:12 +0000] [11755] [INFO] Using worker: sync
[2016-12-12 00:20:12 +0000] [11760] [INFO] Booting worker with pid: 11760
[2016-12-12 00:20:12 +0000] [11761] [INFO] Booting worker with pid: 11761
[2016-12-12 00:20:12 +0000] [11762] [INFO] Booting worker with pid: 11762
[2016-12-12 00:20:12 +0000] [11763] [INFO] Booting worker with pid: 11763

此时,调用http://127.0.0.1:8000

$curl http://127.0.0.1:8000
Hello World

参数说明

-w 处理HTTP请求的worker进程数,以下两种启动方式等价

gunicorn -w 4 myapp:app
gunicorn --workers=4 myapp:app

参考:

-w INT, --workers INT
            The number of worker processes for handling requests.

问题:为何调用 http://ip:8000不行呢, 这个是什么请求呢?

默认有-b参数,参考

-b ADDRESS, --bind ADDRESS
            The socket to bind. [['127.0.0.1:8000']]

以下方式启动就可以用ip的方式启动了

sudo gunicorn -w 2 -b 0.0.0.0:4000 myapp:app

3. 示例代码2

之前简单的flask方法

from flask import Flask
app = Flask(__name__)

@app.route('/hello.world')
def check():
  return 'hello world!'


if __name__ == '__main__':
  app.run()

启动

$sudo gunicorn -b 0.0.0.0:300 -w 4 myapp3:app
[2016-12-18 19:19:51 +0000] [21005] [INFO] Starting gunicorn 19.6.0
[2016-12-18 19:19:51 +0000] [21005] [INFO] Listening at: http://0.0.0.0:300 (21005)
[2016-12-18 19:19:51 +0000] [21005] [INFO] Using worker: sync
[2016-12-18 19:19:51 +0000] [21010] [INFO] Booting worker with pid: 21010
[2016-12-18 19:19:51 +0000] [21011] [INFO] Booting worker with pid: 21011
[2016-12-18 19:19:51 +0000] [21014] [INFO] Booting worker with pid: 21014
[2016-12-18 19:19:51 +0000] [21017] [INFO] Booting worker with pid: 21017

测试

$curl localhost:300/hello.world
hello world!

4. 启动异常

[ERROR] Connection in use: ('127.0.0.1', 8000)

原因之一是之前启动的进程没有杀死。

注:ctrl+z 是挂起进程,但没有终止。ctrl+c是终止进程。

如果使用了ctrl+z再回到进程中可使用fg命令,这样可以用ctrl+c来关闭进程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现挑选出来100以内的质数
Mar 24 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
学习python可以干什么
Feb 26 Python
Python安装与基本数据类型教程详解
May 29 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
Python随机函数库random的使用方法详解
Aug 21 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
python 实现PIL模块在图片画线写字
May 16 Python
python怎么自定义捕获错误
Jun 29 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
Python中如何处理常见报错
Jan 18 Python
python实现按行分割文件
Jul 22 #Python
python UDP(udp)协议发送和接收的实例
Jul 22 #Python
linux环境下Django的安装配置详解
Jul 22 #Python
python判断一个对象是否可迭代的例子
Jul 22 #Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 #Python
python实现大文件分割与合并
Jul 22 #Python
cProfile Python性能分析工具使用详解
Jul 22 #Python
You might like
通过文字传递创建的图形按钮
2006/10/09 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
利用Python破解斗地主残局详解
2017/06/30 Python
python中map()函数的使用方法示例
2017/09/29 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
小学毕业感言200字
2015/07/30 职场文书