IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Gunicorn】Gunicorn安装&相关配置&脚本 -> 正文阅读

[Python知识库]【Gunicorn】Gunicorn安装&相关配置&脚本

1. Gunicorn介绍

官网
官方文档

Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器。
从Ruby的独角兽(Unicorn )项目移植
该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗
Gunicorn直接用命令启动,不需要编写配置文件

2. Gunicorn安装

pip install gunicorn

查看选项

gunicorn -h

3. 配置参数

常用配置参数说明如下。更多点击链接官网查看

3.1 命令行参数

不建议在命令行中配置很多的参数

-c  # 配置文件
-w  # 表示进程(worker)
-b  # 表示绑定ip地址和端口号(bind) 
-D  # 守护进程
--reload  # 自动刷新 (更新代码,自动刷新 debug时可用) **不建议

gunicorn -w 2 -b 127.0.0.1:7000 运行文件名称:Flask程序实例名

命令行示例

gunicorn -w 2 -b 0.0.0.0:7000 app:app -D --reload

3.2 配置文件参数

【强烈建议】在配置文件中进行相关配置
官网配置参数
使用说明参照下图
在这里插入图片描述

配置文件示例

import multiprocessing

from pathlib import Path

bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'gevent'
threads = workers * 2
keepalive = 5
accesslog = str(Path.joinpath(Path.cwd(), 'static', 'log', 'gunicorn_access.log'))
errorlog = str(Path.joinpath(Path.cwd(), 'static', 'log', 'gunicorn_err.log'))
access_log_format = '%({X-Real-IP}i)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

用户访问日志相关的配置

# 指定用户访问的日志文件
accesslog = str(Path.joinpath(Path.cwd(), 'static', 'log', 'gunicorn_access.log'))
# 存储的日志格式
access_log_format = '%({X-Real-IP}i)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

从配置文件中读取的命令行示例

gunicorn -c gunicorn.py app:APP -D

4. Gunicorn日志中获取用户真实IP

Nginx中配置proxy_set_header X-Real-IP $remote_addr;
Nginx示例:

location / {
                # 请求转发到gunicorn服务器
                proxy_pass http://127.0.0.1:5000;
                
                # 请求转发到多个gunicorn服务器
                # proxy_pass http://flask;
                
                # 设置请求头,并将头信息传递给服务器端 
                proxy_set_header Host $host;
                
                # 设置请求头,传递原始请求ip给 gunicorn 服务器
                proxy_set_header X-Real-IP $remote_addr;
                
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

Gunicorn日志配置示例

# i表示 request header
access_log_format = '%({X-Real-IP}i)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

5. Shell脚本示例

因运行在Docker容器中服务需要经常性重启,且容器中只运行了一种类型Gunicorn服务,且为防止误杀进程,简单写了如下的重启脚本

#!/bin/bash

containerName="test"
currTime="date +'%Y-%m-%d %H:%M:%S'"
exist="docker inspect --format '{{.State.Running}}' ${containerName}"
if [ $? -ne 0 ] || [ "${exist}" != "true" ]; then
  # 判断说明: 上行命令执行失败 或者 不存在指定的容器时
  # 查找指定名称的所有进程ID,并彻底杀死进程。 这里的指定名称是 gunicorn
  kill -9 "ps -ef | grep gunicorn | head -1 | awk '{print $2}'"
  gunicorn -c gunicorn.py app:APP -D
  echo "${currTime} Gunicorn服务重启"
else
  echo "${currTime} 请在对应容器内执行此脚本"
fi
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:17:56  更:2021-11-23 12:18:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:39:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码