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里将list中元素依次向前移动一位
Sep 12 Python
Python命令启动Web服务器实例详解
Feb 23 Python
Windows下python3.7安装教程
Jul 31 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python3 拼接字符串的7种方法
Sep 12 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python 执行矩阵与线性代数运算
Aug 01 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初学者头疼问题总结
2006/10/09 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python的keyword模块用法实例分析
2015/06/30 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
python实现简单神经网络算法
2018/03/10 Python
python 遍历pd.Series的index和value
2019/11/26 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
给海归自荐信的建议
2013/12/13 职场文书
房地产开发计划书
2014/01/10 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
辩护词范文大全
2015/05/21 职场文书
优秀员工演讲稿
2019/06/21 职场文书
创业计划书之家政服务
2019/09/18 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers