【发布时间】:2018-03-15 19:24:11
【问题描述】:
我正在尝试使用 Python3/Flask 创建一个简单的 Web 应用程序并在 Apache 上提供它。我不知道如何让我的应用程序响应多个请求。
这是我的 wsgi 文件:
import sys
import os
sys.path.insert(0, '/var/www/html/FlaskDeploy')
from apps import app as application
这段代码摘自httpd.conf文件:
<VirtualHost *:80>
DocumentRoot /var/www/html/FlaskDeploy
WSGIScriptAlias / /var/www/html/FlaskDeploy/app.wsgi
WSGIDaemonProcess apps threads=1 python-path=/var/www/html/FlaskDeploy/env/bin:/var/www/html/FlaskDeploy/env/lib/python3.6/site-packages
<Directory /var/www/html/FlaskDeploy>
WSGIScriptReloading On
WSGIProcessGroup apps
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
一切正常,但应用程序一个接一个地运行请求。例如,假设每个用户执行需要 3 分钟的繁重数据库操作。在这种情况下,当来自不同位置的 3 个用户同时打开应用程序时,最后一个需要等待 9 分钟(包括其他人的操作才能完成)。
基本上我想创建一个能够处理多个请求的 Web 应用程序。
我来自 NodeJS 世界,我从未在 NodeJS 上遇到过这个问题。它在单个线程上运行,但可以处理多个请求。
【问题讨论】:
-
如果确实一次只有一个进程处理请求,那是你的 apache 配置,而不是烧瓶,这是负责任的。无论如何,如果您的请求导致操作持续超过几百毫秒,您应该认真查看任务队列,例如 celery
标签: python apache flask mod-wsgi python-multiprocessing