使用gevent后端服务器运行烧瓶应用程序并利用所有处理器内核的明确方法是什么?我有想法运行多个副本的烧瓶应用程序,其中gevent WSGIServer侦听一个端口在diapason 5000.5003(4个进程)和nginx作为负载均衡器。
但我不确定这种方式是否是最好的,也许还有其他方法可以做到。例如,主进程侦听一个端口,工作人员处理传入连接。
发布于 2014-02-24 04:51:50
我来开一枪!
尼吉克斯!
服务器部分:
location / {
include proxy_params;
proxy_pass http://127.0.0.1:5000;
}烧瓶应用程序
这是一个简单的烧瓶应用程序,我将在这个例子中使用。
myapp.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()uWSGI
好的,我知道你说过你想要使用gevent,但是如果你愿意在这一点上妥协的话,我想你会对这个设置很满意。
[uwsgi]
master = true
plugin = python
http-socket = 127.0.0.1:5000
workers = 4
wsgi-file = myapp.py
callable = app古尼坎
如果您必须有gevent,您可能会喜欢这个小设置。
config.py:
import multiprocessing
workers = multiprocessing.cpu_count()
bind = "127.0.0.1:5000"
worker_class = 'gevent'
worker_connections = 30然后你就可以跑:
gunicorn -c config.py myapp:app没错,每个cpu都有一个工作人员,每个工人有30个连接。
看看这对你有用吗。
如果您真的愿意使用nginx作为负载均衡器,请在您的http部分中尝试这样的方法
upstream backend {
server 127.0.0.1:5000;
server 127.0.0.1:5002;
server 127.0.0.1:5003;
server 127.0.0.1:5004;
} 然后其中一个在服务器部分
location / {
include proxy_params;
proxy_pass http://backend;
}好运兄弟!
https://stackoverflow.com/questions/21486682
复制相似问题