gevent启动多进程WSGI

使用gevent启动flask或是bottle web服务时默认都是单进程,并发性能有限。
可以使用gunicorn配合gevent来启动多进程。
现在使用multiprocessing配合gevent来启动多进程

from gevent import monkey
monkey.patch_all()

from gevent.pywsgi import WSGIServer
from multiprocessing import cpu_count, Process
from bottle import Bottle

app = Bottle()


@app.get("/")
def index():
    return {"hello": "world"}

server = WSGIServer(('', 8000), app, log=None)
server.start()

def serve_forever():
    server.start_accepting()
    server._stop_event.wait()

if __name__ == "__main__":
    # server.serve_forever()
    # 启动的进程数为cpu个数
    for i in range(cpu_count()):
        p = Process(target=serve_forever)
        p.start()

这种是多进程模式
单进程模式:
1.屏蔽 server.start()
2.打开 server.serve_forever()
3.屏蔽 最后三行
使用多进程启动的服务要比单进程的并发高出很多倍
多进程模式是比较理想的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...
    卷卷_麦芽呀阅读 21,690评论 0 6
  • 前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...
    softlns阅读 11,416评论 2 24
  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 8,918评论 0 5
  • 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在python...
    hugoren阅读 10,385评论 1 4
  • Python 3的多进程 多进程库名叫multiprocessing。有几点记录一下: multiprocessi...
    小温侯阅读 8,763评论 0 2