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程序设计入门(1)基本语法简介
Jun 13 Python
Python常用模块介绍
Nov 21 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
Python抓取电影天堂电影信息的代码
Apr 07 Python
Python如何为图片添加水印
Nov 25 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
我就是这样学习Python中的列表
Jun 02 Python
简单了解Python matplotlib线的属性
Jun 29 Python
Python中求对数方法总结
Mar 10 Python
Python调用C语言程序方法解析
Jul 07 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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初学者最感迷茫的问题小结
2010/03/27 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP数组函数知识汇总
2016/05/12 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python中PyQuery库用法分享
2021/01/15 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
大学生创业策划书
2014/02/02 职场文书
材料员岗位职责
2014/03/13 职场文书
调解协议书
2014/04/16 职场文书
禁毒宣传标语
2014/06/19 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
接待员岗位职责
2015/02/13 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python