【发布时间】:2020-04-14 16:15:50
【问题描述】:
我想使用 uWSGI 提供一个简单的 Flask 应用程序,以便拥有一个具有 4 个进程的简单 uWSGI 部署(并因此响应多个并行请求)。
我创建了包含应用程序的 "simple_app.py" 文件:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run()
还有一个“uwsgi.ini”配置文件:
[uwsgi]
socket = 0.0.0.0:5000
protocol = http
module = simple_app:app
threads = 1
processes = 4
但是,当我尝试使用终端命令 uwsgi uwsgi.ini 在本地 Macbook 机器上启动服务器时,会引发以下导入错误:
*** Operational MODE: preforking ***
Traceback (most recent call last):
File "./simple_app.py", line 9, in <module>
from flask import Flask
File "/anaconda3/lib/python3.7/site-packages/flask/__init__.py", line 14, in <module>
from jinja2 import escape
File "/anaconda3/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
from jinja2.environment import Environment, Template
File "/anaconda3/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
from jinja2 import nodes
File "/anaconda3/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
from jinja2.utils import Markup
File "/anaconda3/lib/python3.7/site-packages/jinja2/utils.py", line 16, in <module>
from jinja2._compat import text_type, string_types, implements_iterator, \
File "/anaconda3/lib/python3.7/site-packages/jinja2/_compat.py", line 31, in <module>
import pickle
File "/anaconda3/lib/python3.7/pickle.py", line 33, in <module>
from struct import pack, unpack
File "/anaconda3/lib/python3.7/struct.py", line 13, in <module>
from _struct import *
ImportError: dlopen(/anaconda3/lib/python3.7/lib-dynload/_struct.cpython-37m-darwin.so, 2): Symbol not found: _PyByteArray_Type
Referenced from: /anaconda3/lib/python3.7/lib-dynload/_struct.cpython-37m-darwin.so
Expected in: flat namespace
in /anaconda3/lib/python3.7/lib-dynload/_struct.cpython-37m-darwin.so
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (pid: 53858, cores: 1)
spawned uWSGI worker 2 (pid: 53859, cores: 1)
spawned uWSGI worker 3 (pid: 53860, cores: 1)
spawned uWSGI worker 4 (pid: 53861, cores: 1)
这两个文件都在我系统的同一个文件夹中;如何正确启动应用并接收多个并行请求?
【问题讨论】: