zoukankan      html  css  js  c++  java
  • 对Gunicorn文档的学习

    安装

    安装方式

    • 安装最新版本
      • pip install gunicorn
    • 安装源代码
      • pip install git+https://github.com/benoitc/gunicorn.git
    • 系统安装
      • sudo apt-get install gunicorn

    设计 Worker 类型

    根据同步、异步设计 Worker。如果需要异步worker,需要安装 Eventlet 或 Gevent。

    • gunicorn[eventlet] - Eventlet-based greenlets
    • gunicorn[gevent] - Gevent-based greenlets
    • gunicorn[gthread] - Threaded
    • gunicorn[tornado] - Tornado-based workers, not recommended

    运行 Gunicorn

    运行方式

    • 命令
      • gunicorn [OPTIONS] APP_MODULE
      • 例如:gunicorn --workers=4 --bind=0.0.0.0:8000 wsgi:app
    • 利用类似Django、Pyramid、TurboGears或Flask Web框架

    配置

    配置方式

    • Web框架的配置文件。她只能影响到指定应用程序
    • 命令行中可选指定的配置文件。它能覆盖掉Web框架的配置。
    • 命令行中通过参数配置。它是配置最开始被考虑的位置。

    配置项

    • 使用配置文件
    • Debugging
      • reload
      • reload_engine
      • reload_extra_files
      • spew
      • check_config
    • Logging
      • access_log_format 访问日志格式
        • 格式详解
    # h 远程地址             127.0.0.1
    # l                    "-"
    # u 用户名               -
    # D request-time-ms
    # p process-id         <121005>
    # t time               [14/May/2020:10:31:25 +0800]
    # r 状态行              "POST /v1/devicestatus/update/bytask HTTP/1.1"
    # s 状态码              200
    # b response-length    35
    # f 参考                "-"
    # a 用户代理             "python-requests/2.9.1"
    
    • Processing Naming
    • SSL
    • Security
    • Server Hooks
    • Server Mechanics
    • Server Socket
    • Worker Process

    Instrumentation

    部署

    强烈建议在代理服务器后使用Gunicorn。

    Nginx 配置

    使用虚拟环境

    监控

    日志

    参考概念

    进程、线程、协程的区别

    Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。

    协程又称为微线程。英文名Coroutine,协程是一种用户态的轻量级线程。

    • 协程的好处
      无需线程上下文切换的开销
      无需原子操作(不会被线程调度机制打断的操作)锁定以及同步的开销
      方便切换控制流,简化编程模型
      高并发+高扩展性+低成文:一个CPU支持上完的协程都不是问题,所以很适合高并发处理

    • 协程的缺点
      无法利用多核资源:协程的本质是单线程,需要和进程配合才能运行在多CPU上
      进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序

    • 协程的条件
      必须在只有一个单线程里实现并发
      修改共享数据不需加锁
      用户程序里自己保存多个控制流的上下文栈
      一个协程遇到IO操作自动切换到其它协程

  • 相关阅读:
    C++注释
    python绘制动态图
    解决“<form>提交,CSRF验证失败。请求中止”
    Django相关的MTV
    AVplayer搭建ftp共享PC端
    02: 均值(1.5编程基础之循环控制)
    1.5编程基础之循环控制_ 01:求平均年龄
    for循环进阶
    找第k大的数
    c++中,bool与int 的区别
  • 原文地址:https://www.cnblogs.com/daemonFlY/p/12797864.html
Copyright © 2011-2022 走看看