Gevent WSGI不同时处理请求

时间:2017-10-18 19:35:34

标签: python flask server wsgi gevent

更新

拿起Grahams的建议并放弃了Gevent作为我的WSGI,我转而使用mod_wsgi-express,到目前为止一切都按预期工作。我需要对Gevent做一些更多的研究,以确定它为什么不起作用,但这是一个非常现实的机会,因为Teradata编译器与monkey_patch不兼容,因此被阻塞/序列化。

我会把问题留给其他流浪者,欢呼。

ORIGINAL

创建Flask应用程序作为前端GUI,供用户操作Teradata数据库中的数据。

我已经启动并运行了Gevent应用程序,但我意识到它并没有以并行方式处理多个用户的请求。

一个例子是用户A正在对数据库运行~10秒的查询,并且用户B甚至无法访问主页,直到用户A的查询完成。一旦查询返回,用户B的主页就会加载,然后用户B的浏览器才会挂在空白加载屏幕上。

我希望访问WSGI服务器的每个用户都有自己独立的应用程序实例,无论其他用户的查询如何,都能够在页面中导航。我认为,当许多用户同时访问数据库时,Gevent功能会有所帮助。

我觉得这是一个组合 1)我没有正确配置应用程序 2)我没有正确理解Gevent

这是我的设置,我哪里出错?

app.wsgi

from gevent import monkey, sleep

monkey.patch_all()

import sys

sys.path.append('/var/www/fotlflaskapp')

from app import app as application

初始化的.py

from gevent import monkey, sleep

# need to patch sockets to make requests async
monkey.patch_all()

from flask import Flask
import os

app = Flask(__name__)
app.config.from_object('config')

with open(os.getcwd() + '/flag.txt', 'r') as file:
    flag = file.readline()

if flag == 'prod':
    production = True
else:
    production = False

from app import views
from gevent.wsgi import WSGIServer

if production is False:
    app.run(debug=True)
else:
    server = WSGIServer(('10.2.33.216', 8888), app)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.stop()

我使用以下命令调用.wsgi文件,该文件指向 init .py

python3.4 /var/www/flaskapp/app/app.wsgi

我绝对无法弄清楚为什么应用程序以完全序列化的方式运行。如果有多个用户正在访问该应用,为什么他们每个人都必须等待彼此甚至只是访问页面?

0 个答案:

没有答案