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保存网页上的图片或者保存页面为截图
Mar 05 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
OpenCV 之按位运算举例解析
Jun 19 Python
详解python变量与数据类型
Aug 25 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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
php实现网页缓存的工具类分享
2015/07/14 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
Yii2单元测试用法示例
2016/11/12 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
extjs render 用法介绍
2013/09/11 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
bootstrap table小案例
2016/10/21 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
python的unittest测试类代码实例
2017/12/07 Python
python实现C4.5决策树算法
2018/08/29 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
小学生开学第一课活动方案
2014/03/27 职场文书
购房意向书范本
2014/04/01 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android