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机器学习之神经网络(一)
Dec 20 Python
windows下python和pip安装教程
May 25 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python3安装speech语音模块的方法
Dec 24 Python
机器学习实战之knn算法pandas
Jun 22 Python
Python中拆分字符串的操作方法
Jul 23 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
python playwright 自动等待和断言详解
Nov 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获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
YII框架关联查询操作示例
2019/04/29 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
js调用flash的效果代码
2008/04/26 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
Python使用chardet判断字符编码
2015/05/09 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python输出带颜色字体实例方法
2019/09/01 Python
Python实现粒子群算法的示例
2021/02/14 Python
自我鉴定范文
2013/11/10 职场文书
财务人员个人求职信范文
2013/12/04 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
小学英语教学反思
2014/01/30 职场文书
给老师的检讨书
2014/02/11 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
美容院经理岗位职责
2014/04/03 职场文书
大学生社团活动总结
2014/04/26 职场文书
诚信承诺书模板
2014/05/26 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
机器人瓦力观后感
2015/06/12 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL