拿起Grahams的建议并放弃了Gevent作为我的WSGI,我转而使用mod_wsgi-express,到目前为止一切都按预期工作。我需要对Gevent做一些更多的研究,以确定它为什么不起作用,但这是一个非常现实的机会,因为Teradata编译器与monkey_patch不兼容,因此被阻塞/序列化。
我会把问题留给其他流浪者,欢呼。
创建Flask应用程序作为前端GUI,供用户操作Teradata数据库中的数据。
我已经启动并运行了Gevent应用程序,但我意识到它并没有以并行方式处理多个用户的请求。
一个例子是用户A正在对数据库运行~10秒的查询,并且用户B甚至无法访问主页,直到用户A的查询完成。一旦查询返回,用户B的主页就会加载,然后用户B的浏览器才会挂在空白加载屏幕上。
我希望访问WSGI服务器的每个用户都有自己独立的应用程序实例,无论其他用户的查询如何,都能够在页面中导航。我认为,当许多用户同时访问数据库时,Gevent功能会有所帮助。
我觉得这是一个组合 1)我没有正确配置应用程序 2)我没有正确理解Gevent
这是我的设置,我哪里出错?
from gevent import monkey, sleep
monkey.patch_all()
import sys
sys.path.append('/var/www/fotlflaskapp')
from app import app as application
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
我绝对无法弄清楚为什么应用程序以完全序列化的方式运行。如果有多个用户正在访问该应用,为什么他们每个人都必须等待彼此甚至只是访问页面?