我目前在使用带有eventlet的flask-socketio运行Flask应用程序时遇到问题。当我没有eventlet推送到AWS时,我的应用程序完美运行。这很棒,但是我希望我的应用程序能够生产就绪,并且运行flask-socketio而没有eventlet是缓慢而乏味的。我所做的是我将我的应用程序分解为一个较小的烧瓶应用程序,其中包含最低要求和代码,以便测试究竟是什么问题(下面提供了此应用程序的链接)。这个较小的应用程序可以在aws上运行,如果你在requirements.txt中删除了eventlet及它的依赖项,如果你把它们留在那里就会中断。经过大量的调试和测试后,我仍然无法弄清楚错误来源的来源。任何帮助将不胜感激。
在AWS上,我收到以下通用服务器错误:
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
请与root @ localhost上的服务器管理员联系,告知他们此错误发生的时间以及您在此错误发生之前执行的操作。
服务器错误日志中可能会提供有关此错误的更多信息。
在AWS eb日志中,我看到以下内容:
[Fri Feb 16 17:45:47.269584 2018] [:error] [pid 4233] import re
[Fri Feb 16 17:45:47.269592 2018] [:error] [pid 4233] File "/opt/python/run/venv/lib64/python3.6/re.py", line 142, in <module>
[Fri Feb 16 17:45:47.269750 2018] [:error] [pid 4233] class RegexFlag(enum.IntFlag):
[Fri Feb 16 17:45:47.269762 2018] [:error] [pid 4233] AttributeError: module 'enum' has no attribute 'IntFlag'
[Fri Feb 16 17:45:48.274188 2018] [:error] [pid 4233] [remote 127.0.0.1:148] mod_wsgi (pid=4233): Target WSGI script '/opt/python/current/app/application.py' cannot be loaded as Python module.
[Fri Feb 16 17:45:48.274233 2018] [:error] [pid 4233] [remote 127.0.0.1:148] mod_wsgi (pid=4233): Exception occurred processing WSGI script '/opt/python/current/app/application.py'.
这是包含我的项目代码的github仓库:
https://github.com/Freddie-Pike/Flask-SocketIO-AWS
编辑:此设置适用于localhost。它只适用于AWS。
答案 0 :(得分:1)
此错误:
[Fri Feb 16 17:45:47.269584 2018] [:error] [pid 4233] import re
[Fri Feb 16 17:45:47.269592 2018] [:error] [pid 4233] File "/opt/python/run/venv/lib64/python3.6/re.py", line 142, in <module>
[Fri Feb 16 17:45:47.269750 2018] [:error] [pid 4233] class RegexFlag(enum.IntFlag):
[Fri Feb 16 17:45:47.269762 2018] [:error] [pid 4233] AttributeError: module 'enum' has no attribute 'IntFlag'
很可能与SocketIO无关。我的猜测是你的应用程序有一个名为enum
的模块或包,它隐藏了Python 3.6中的enum
包。删除或重命名您的enum
,以便Python可以看到自己的enum
,错误就会消失。
除此之外,正如Graham所说,你不能将apache和mod_wsgi与websockets一起使用。您可以参考Flask-SocketIO文档以获取支持的部署配置列表。
答案 1 :(得分:1)
很抱歉,我上传了使用旧版setuptools创建的软件包,该软件包在enum34;python_version<"3.4"
中不遵循此语法install_requirements
。
请尝试更新pip install -U eventlet
,刚刚发布的0.22.1应解决此问题。
关于Github的相关问题(订阅新闻,如果0.22.1没有修复它):https://github.com/eventlet/eventlet/issues/463