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)操作方法详解
Mar 11 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python 闭包的使用方法
Sep 07 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python遍历小写英文字母的方法
Jan 02 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 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 求质素(素数) 的实现代码
2011/04/12 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python 实现微信自动回复的方法
2020/09/11 Python
python字典与json转换的方法总结
2020/12/28 Python
Python项目打包成二进制的方法
2020/12/30 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
2014年保洁工作总结
2014/11/24 职场文书
大学生毕业评语
2014/12/31 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python