本文主要是介绍bottle的gunicorn+gevent部署 和 gunicorn+meinheld 部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
config.py(gunicorn+gevent):
# -*-coding:utf-8 -*-__author__ = "ZJL"import gevent.monkey
import multiprocessinggevent.monkey.patch_all()# 监听本机的5000端口
bind = '0.0.0.0:5000'preload_app = True# 开启进程
# workers=4
workers = multiprocessing.cpu_count() * 2 + 1# 每个进程的开启线程
threads = multiprocessing.cpu_count() * 2backlog = 2048# 工作模式为gevent
worker_class = "gevent"# debug=True# 如果不使用supervisord之类的进程管理工具可以是进程成为守护进程,否则会出问题
daemon = True# 进程名称
proc_name = 'gunicorn.pid'# 进程pid记录文件
pidfile = 'app_pid.log'loglevel = 'debug'
logfile = 'debug.log'
accesslog = 'access.log'
access_log_format = '%(h)s %(t)s %(U)s %(q)s'
configm.py(gunicorn+meinheld):
# -*-coding:utf-8 -*-__author__ = "ZJL"import multiprocessing# 监听本机的5000端口
bind = '0.0.0.0:5000'preload_app = True# 开启进程
# workers=4
workers = multiprocessing.cpu_count() * 2 + 1# 每个进程的开启线程
threads = multiprocessing.cpu_count() * 2backlog = 2048#工作模式为meinheld
worker_class = "egg:meinheld#gunicorn_worker"# debug=True# 如果不使用supervisord之类的进程管理工具可以是进程成为守护进程,否则会出问题
daemon = True# 进程名称
proc_name = 'gunicorn.pid'# 进程pid记录文件
pidfile = 'app_pid.log'loglevel = 'debug'
logfile = 'debug.log'
accesslog = 'access.log'
access_log_format = '%(h)s %(t)s %(U)s %(q)s'
bottletest.py
# -*-coding:utf-8 -*-__author__ = "ZJL"from bottle import route, run
from mogodbM import mb@route('/')
def hello():# 插入mongodb数据mb.insert('zjl_demo', [{'a': '1', 'b': [1, 2, 3, 4, "哈哈哈"]}])# 查询数据mb.find_cursor("zjl_demo", {"a": "1"})return "Hello World!"run(server='gunicorn',host='127.0.0.1', port=5000)# debug=True
gunicorn+gevent启动命令:gunicorn -c config.py bottletest:app
gunicorn+meinheld启动命令:gunicorn -c configm.py bottletest:app
性能方面,meinheld真的是性能怪兽,基本是gevent的十几倍(读写mongodb的情况下)
这篇关于bottle的gunicorn+gevent部署 和 gunicorn+meinheld 部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!