首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多芯烧瓶

多芯烧瓶
EN

Stack Overflow用户
提问于 2014-01-31 17:47:10
回答 1查看 3.3K关注 0票数 1

使用gevent后端服务器运行烧瓶应用程序并利用所有处理器内核的明确方法是什么?我有想法运行多个副本的烧瓶应用程序,其中gevent WSGIServer侦听一个端口在diapason 5000.5003(4个进程)和nginx作为负载均衡器。

但我不确定这种方式是否是最好的,也许还有其他方法可以做到。例如,主进程侦听一个端口,工作人员处理传入连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 04:51:50

我来开一枪!

尼吉克斯!

服务器部分:

代码语言:javascript
复制
location / {
    include proxy_params;
    proxy_pass http://127.0.0.1:5000;
}

烧瓶应用程序

这是一个简单的烧瓶应用程序,我将在这个例子中使用。

myapp.py:

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

uWSGI

好的,我知道你说过你想要使用gevent,但是如果你愿意在这一点上妥协的话,我想你会对这个设置很满意。

代码语言:javascript
复制
[uwsgi]
    master = true
    plugin = python
    http-socket = 127.0.0.1:5000
    workers = 4
    wsgi-file = myapp.py
    callable = app

古尼坎

如果您必须有gevent,您可能会喜欢这个小设置。

config.py:

代码语言:javascript
复制
import multiprocessing

workers = multiprocessing.cpu_count()
bind = "127.0.0.1:5000"
worker_class = 'gevent'
worker_connections = 30

然后你就可以跑:

代码语言:javascript
复制
gunicorn -c config.py myapp:app

没错,每个cpu都有一个工作人员,每个工人有30个连接。

看看这对你有用吗。

如果您真的愿意使用nginx作为负载均衡器,请在您的http部分中尝试这样的方法

代码语言:javascript
复制
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;
} 

然后其中一个在服务器部分

代码语言:javascript
复制
location / {
    include proxy_params;
    proxy_pass http://backend;
}

好运兄弟!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21486682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档