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的Django中django-userena组件的简单使用教程
May 30 Python
Python进程间通信用法实例
Jun 04 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python中垃圾回收和del语句详解
Nov 15 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
在Python中表示一个对象的方法
Jun 25 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
关于Keras Dense层整理
May 21 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Python制作春联的示例代码
Jan 22 Python
python blinker 信号库
May 04 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的MySQL连接类
2013/06/07 PHP
php实现多城市切换特效
2015/08/09 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python2.7实现邮件发送功能
2018/12/12 Python
python 实现UTC时间加减的方法
2018/12/31 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python实现微信机器人的方法
2019/09/06 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
python中time.ctime()实例用法
2021/02/03 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
委托书范文
2014/04/02 职场文书
学生安全责任书范本
2014/07/24 职场文书
争先创优公开承诺书
2014/08/30 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android