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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python中的匿名函数使用简介
Apr 27 Python
python实现矩阵乘法的方法
Jun 28 Python
python实现中文分词FMM算法实例
Jul 10 Python
在Python的Django框架中显示对象子集的方法
Jul 21 Python
Python实现二叉堆
Feb 03 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python对象与引用的介绍
Jan 24 Python
Python 学习教程之networkx
Apr 15 Python
python中_del_还原数据的方法
Dec 09 Python
如何Python使用re模块实现okenizer
Apr 30 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python的gevent框架的入门教程
2015/04/29 Python
python实现发送邮件及附件功能
2021/03/02 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
经理职责范文
2013/11/08 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
抽样调查项目计划书
2014/04/24 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
海洋天堂观后感
2015/06/05 职场文书