zoukankan      html  css  js  c++  java
  • gunicorn 实现 gevent 多线程

    # -*- coding:utf8 -*-
    # gunicorn 参数详情 https://blog.csdn.net/y472360651/article/details/78538188
    from gevent import monkey
    import multiprocessing
    monkey.patch_all()
    # 监听本机的8888端口
    bind = '0.0.0.0:8888'        #指定gunicorn的端口号
    #preload_app = True
    # 开启进程
    # workers=4
    workers = multiprocessing.cpu_count() * 2 + 1
    # 每个进程的开启线程
    threads = multiprocessing.cpu_count() * 2
    backlog = 2048
    timeout = 60*60*10
    # 工作模式为gevent
    worker_class = "gevent"
    debug=True
    # 如果不使用supervisord之类的进程管理工具可以是进程成为守护进程,否则会出问题
    # daemon = True
    # # 进程名称
    proc_name = 'gunicorn.pid'
    # # 进程pid记录文件
    # pidfile = 'app_pid.log'
    # loglevel = '/logs/debug'
    # logfile = '/logs/gun_debug.log'
    # accesslog = '/logs/gun_access.log'
    # access_log_format = '%(h)s %(t)s %(U)s %(q)s'
    # errorlog = '/logs/gun_error.log'


    启动
    ["./wait.sh", "mysql:3306", "--timeout=120","--","gunicorn",'-c','gunicorn_config.py','start:app']
    
    

    gunicorn 安装

    pip install gunicorn

    gunicorn_demo.py

    gunicorn 详细配置

    gunicorn配置项可以通过gunicorn的启动命令行中设定,也可以通过配置文件指定。强烈建议使用一个配置文件。

    配置项如下:

    server socket

    • bind
      监听地址和端口。

    • backlog
      服务器中在pending状态的最大连接数,即client处于waiting的数目。超过这个数目, client连接会得到一个error。
      建议值64-2048。

    worker 进程

    • workers
      worker进程的数量。建议值2-4 x $(NUM_CORES), 缺省为1。

    • worker_class
      worker进程的工作方式。 有 sync, eventlet, gevent, tornado, gthread, 缺省值sync。

    • threads
      工作进程中线程的数量。建议值2-4 x $(NUM_CORES), 缺省值1。
      此配置只适用于gthread 进程工作方式, 因为gevent这种使用的是协程工作方式。

    • worker_connections
      客户端最大同时连接数。只适用于eventlet, gevent工作方式。

    • max_requests
      worker重启之前处理的最大requests数, 缺省值为0表示自动重启disabled。主要是防止内存泄露。

    • max_requests_jitter
      抖动参数,防止worker全部同时重启。

    • timeout
      通常设为30。

    • graceful_timeout
      接收到restart信号后,worker可以在graceful_timeout时间内,继续处理完当前requests。

    • keepalive
      server端保持连接时间。

    security

    • limit_request_line
      http request line最大字节数。值范围0-8190, 0表示无限制。

    • limit_request_field
      http request中 header字段数的最大值。缺省为100,最大32768。

    • limit_request_field_size
      http request header字段最大字节数。0表示无限制。

    调试

    • reload
      当代码有修改时,自动重启workers。适用于开发环境。

    • reload_extra_files
      扩展reload配置,增加templates,configurations等文件修改监控。

    • spew
      跟踪程序执行的每一行。

    • check_config
      检查配置。

    server 机制

    • sendfile
      系统底层拷贝数据方式,提供performance。

    • chdir
      在app加载之前,进入到此目录。

    • daemon
      应用是否以daemon方式运行。

    • raw_env
      key=value, 传递环境参数。

    • pidfile
      pid存储文件路径。

    • worker_tmp_dir
      临时工作目录。

    • user
      指定worker进程的运行用户名。

    • group
      指定worker进程运行用户所在组。

    • umask
      gunicorn创建文件的缺省权限。

    • pythonpath
      附加到python path的目录列表。

    日志

    • accesslog
      访问日志文件路径。

    • access_log_format
      日志格式。 例如 %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" 。

    • errorlog
      错误日志路径。

    • loglever
      日志级别。debug, info, warning, error, critical.

    • capture_output
      重定向stdout/stderr到error log file。

    • logger_class
      日志实现类。缺省gunicorn.glogging.Logger 。

    • logconfig
      日志配置文件。同python标准日志模块logging的配置。

    进程名

    • proc_name
      设置进程名(setproctitle),在ps,top等命令中会看到. 缺省值为default_proc_name配置。

    server钩子

    • on_starting
    • on_reload
    • when_ready
    • pre_fork
    • post_fork
    • post_worker_init
    • worker_init
    • worker_abort
    • pre_exec
    • pre_request
    • post_request
    • child_exit
    • worker-exit
    • nworkers_changed
    • on_exit
  • 相关阅读:
    使用FluentScheduler和IIS预加载在asp.net中实现定时任务管理
    [WCF REST] Web消息主体风格(Message Body Style)
    [WCF REST] Web消息主体风格(Message Body Style)
    REST WCF Service中的WebMessageBodyStyle
    REST WCF Service中的WebMessageBodyStyle
    C#表示空字符
    053517
    053516
    053515
    053514
  • 原文地址:https://www.cnblogs.com/Baylor-Chen/p/11227166.html
Copyright © 2011-2022 走看看