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中expandtabs()方法的使用
May 18 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
详解Python传入参数的几种方法
May 16 Python
python爬虫-模拟微博登录功能
Sep 12 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
Python爬虫实现百度翻译功能过程详解
May 29 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使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php写的AES加密解密类分享
2014/06/20 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
Python验证码识别处理实例
2015/12/28 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
Python3 max()函数基础用法
2019/02/19 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
学校端午节活动方案
2014/08/23 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书