使用gevent啟動(dòng)flask或是bottle web服務(wù)時(shí)默認(rèn)都是單進(jìn)程,并發(fā)性能有限。
可以使用gunicorn配合gevent來(lái)啟動(dòng)多進(jìn)程。
現(xiàn)在使用multiprocessing配合gevent來(lái)啟動(dòng)多進(jìn)程
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()
# 啟動(dòng)的進(jìn)程數(shù)為cpu個(gè)數(shù)
for i in range(cpu_count()):
p = Process(target=serve_forever)
p.start()
這種是多進(jìn)程模式
單進(jìn)程模式:
1.屏蔽 server.start()
2.打開(kāi) server.serve_forever()
3.屏蔽 最后三行
使用多進(jìn)程啟動(dòng)的服務(wù)要比單進(jìn)程的并發(fā)高出很多倍
多進(jìn)程模式是比較理想的