首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gunicorn ImportError:无法在码头中从“eventlet.wsgi”导入名称“ALREADY_HANDLED”

Gunicorn ImportError:无法在码头中从“eventlet.wsgi”导入名称“ALREADY_HANDLED”
EN

Stack Overflow用户
提问于 2021-05-05 22:20:02
回答 3查看 15.4K关注 0票数 26

我有一个工作代码运行瓶与枪角(事件工人)在码头。它也在生产中工作,但在我的机器上,它开始这样做。我在谷歌上找不到关于这件事的任何东西。有什么问题吗?

代码语言:javascript
运行
复制
Error: class uri 'eventlet' invalid or not found:
web_1       |
web_1       | [Traceback (most recent call last):
web_1       |   File "/root/.local/lib/python3.7/site-packages/gunicorn/util.py", line 99, in load_class
web_1       |     mod = importlib.import_module('.'.join(components))
web_1       |   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1       |     return _bootstrap._gcd_import(name[level:], package, level)
web_1       |   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1       |   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1       |   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1       |   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1       |   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1       |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1       |   File "/root/.local/lib/python3.7/site-packages/gunicorn/workers/geventlet.py", line 20, in <module>
web_1       |     from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED
web_1       | ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/root/.local/lib/python3.7/site-packages/eventlet/wsgi.py)
web_1       | ]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-06 00:05:32

安装较早版本的事件解决了问题:pip install eventlet==0.30.2

编辑:

您可以使用以下更新版本:pip install eventlet==0.33.0 https://github.com/benoitc/gunicorn/archive/refs/heads/master.zip#egg=gunicorn==20.1.0

请参阅:https://github.com/benoitc/gunicorn/pull/2581#issuecomment-994198667

谢谢你@jmunsch

票数 37
EN

Stack Overflow用户

发布于 2021-05-07 05:30:03

看起来最近eventlet发生了变化

有关示例修补程序和潜在发布版本:https://github.com/benoitc/gunicorn/pull/2581,请参阅此PR。

Eventlet 0.30.3+只增加了补丁版本,就删除了破坏wsgi.ALREADY_HANDLED的公共API。抱歉的。

ALREADY_HANDLED问题:WSGI_LOCAL/事件#543解决方案:事件/事件#544

如果使用websockets,建议使用eventlet>=0.31.0,因为旧版本容易受到DoS攻击。GHSA-9p9m-jm8w-94p2

在我没有碰过的线路上的检查失败了。。

票数 10
EN

Stack Overflow用户

发布于 2022-05-13 05:40:08

当我尝试将SocketIO与https://localcoder.org/deploy-flask-socketio-on-beanstalk一起使用时,我犯了同样的错误,并在https://localcoder.org/deploy-flask-socketio-on-beanstalk找到了答案。

我能够按照他们的建议来运行:

代码语言:javascript
运行
复制
pip uninstall gunicorn
pip uninstall eventlet
pip install gunicorn==20.1.0
pip install eventlet==0.30.2

gunicorn --worker-class eventlet -w 1 app:app

环境: ALB -> EC2/Linux2 2(python3.8.5,Socket.IO)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67409452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档