Bug:eventlet ImportError cannot import name ‘ALREADY HANDLED

问题

测试gunicorn不同work下的性能时候,在eventlet 方式下报错误

Error: class uri 'eventlet' invalid or not found:
[Traceback (most recent call last):
File "/app/venv/lib64/python3.6/site-packages/gunicorn/util.py", line 99, in load_class
mod = importlib.import_module('.'.join(components))
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/xxxx/python3.6/site-packages/gunicorn/workers/geventlet.py", line 20, in <module>
from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED
ImportError: cannot import name 'ALREADY_HANDLED'

解决办法

安装eventlet的时候不要用

pip install eventlet 

这样一般会安装最新的版本

网上搜索一圈,发现是gunicorn和eventlet的版本匹配问题
如果gunicorn版本是19.9或者20.1
使用 eventlet的版本要是0.30.2

pip install  eventlet==0.30.2 

参考

  • https://github.com/eventlet/eventlet/issues/702

你可能感兴趣的:(Bug合集)