使用Gunicorn部署Sanic应用

简介: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框架兼容,并具有实现简单,轻量级,高性能等特点。

历史攻略:

微服务框架nameko + sanic简单使用

目录结构:

(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

图片

猜你喜欢

转载自blog.csdn.net/hzblucky1314/article/details/130120178