简介:Gunicorn是一个 UNIX 下的 WSGI HTTP 服务器,它是一个 移植自 Ruby 的 Unicorn 项目的 pre-fork worker 模型。它既支持 eventlet , 也支持 greenlet在管理 worker 上,使用了 pre-fork 模型,即一个 master 进程管理多个 worker 进程,所有请求和响应均由 Worker 处理。Master 进程是一个简单的 loop, 监听 worker 不同进程信号并且作出响应。比如接受到 TTIN 提升 worker 数量,TTOU 降低运行 Worker 数量。如果 worker 挂了,发出 CHLD, 则重启失败的 worker, 同步的 Worker 一次处理一个请求。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。
目录结构:
(py39) [root@ci4vyvxi572ysx2s sanicGunicorn]# tree -D -L 2
.
├── [Mar 27 23:23] app.py
├── [Mar 27 23:23] __pycache__
│ └── [Mar 27 23:23] app.cpython-39.pyc
└── [Mar 27 23:27] requirements.txt
1 directory, 3 files
requirements.txt:
sanic
uvicorn
gunicorn
案例源码:
# -*- coding: utf-8 -*-
# time: 2023/3/27 22:02
# file: app.py
# 公众号: 玩转测试开发
import datetime
from sanic import Sanic
from sanic.response import json
app = Sanic(__name__)
@app.route("/hi")
async def test(request):
return json({"hello": "world", "time": f"{str(datetime.datetime.now())}"})
后台运行:
gunicorn app:app -w 1 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 &
gunicorn常用参数:
指定一个配置文件(.py) -c --config
绑定socket -b --bind
gunicorn -b 127.0.0.1:8080
守护进程后台运行 -D --daemon
worker的数量 -w --workers
工作进程类型 -k
指定access日志文件 --access-logfile
指定error日志文件 --error-logfile
访问结果:http://{ip}:8000/hi
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!