Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python flask socketio在安装了eventlet的aws上不工作_Python_Amazon Web Services_Flask_Flask Socketio_Eventlet - Fatal编程技术网

Python flask socketio在安装了eventlet的aws上不工作

Python flask socketio在安装了eventlet的aws上不工作,python,amazon-web-services,flask,flask-socketio,eventlet,Python,Amazon Web Services,Flask,Flask Socketio,Eventlet,我目前在使用Flask socketio和eventlet运行Flask应用程序时遇到问题。当我在没有eventlet的情况下使用AWS时,我的应用程序可以完美地工作。这是伟大的,但我希望我的应用程序是生产准备和运行没有eventlet的flask socketio是缓慢和乏味的。我所做的是将我的应用程序分解成一个较小的flask应用程序,其中包含最基本的要求和代码,以便测试到底是什么错了(下面提供了指向此应用程序的链接)。如果您在requirements.txt中去掉eventlet及其依赖项

我目前在使用Flask socketio和eventlet运行Flask应用程序时遇到问题。当我在没有eventlet的情况下使用AWS时,我的应用程序可以完美地工作。这是伟大的,但我希望我的应用程序是生产准备和运行没有eventlet的flask socketio是缓慢和乏味的。我所做的是将我的应用程序分解成一个较小的flask应用程序,其中包含最基本的要求和代码,以便测试到底是什么错了(下面提供了指向此应用程序的链接)。如果您在requirements.txt中去掉eventlet及其依赖项,这个较小的应用程序将在aws上工作,如果您将它们留在那里,它将崩溃。经过大量的调试和测试,我仍然无法找出错误的来源。任何帮助都将不胜感激

在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'.
[Fri Feb 16 17:45:47.269584 2018][:错误][pid 4233]重新导入
[Fri Feb 16 17:45:47.269592 2018][:error][pid 4233]文件“/opt/python/run/venv/lib64/python3.6/re.py”,第142行,in
[Fri Feb 16 17:45:47.269750 2018][:error][pid 4233]类RegexFlag(enum.IntFlag):
[Fri Feb 16 17:45:47.269762 2018][:错误][pid 4233]属性错误:模块“enum”没有属性“IntFlag”
[Fri Feb 16 17:45:48.274188 2018][:error][pid 4233][remote 127.0.0.1:148]mod_wsgi(pid=4233):无法将目标wsgi脚本“/opt/python/current/app/application.py”作为python模块加载。
[Fri Feb 16 17:45:48.274233 2018][:error][pid 4233][remote 127.0.0.1:148]mod_wsgi(pid=4233):处理wsgi脚本'/opt/python/current/app/application.py'时发生异常。
以下是包含我的项目代码的github repo:

编辑:此设置在本地主机上工作。它在AWS上不起作用。

此错误:

[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:47.269584 2018][:错误][pid 4233]重新导入
[Fri Feb 16 17:45:47.269592 2018][:error][pid 4233]文件“/opt/python/run/venv/lib64/python3.6/re.py”,第142行,in
[Fri Feb 16 17:45:47.269750 2018][:error][pid 4233]类RegexFlag(enum.IntFlag):
[Fri Feb 16 17:45:47.269762 2018][:错误][pid 4233]属性错误:模块“enum”没有属性“IntFlag”
很可能与SocketIO无关。我猜您的应用程序有一个名为
enum
的模块或包,它隐藏着Python 3.6中的
enum
包。删除或重命名
enum
,以便Python可以看到自己的
enum
,错误就会消失


此外,正如Graham所指出的,您不能将apache和mod_wsgi与WebSocket一起使用。您可以查阅Flask SocketIO文档以获取支持的部署配置列表。

对不起,我上载了使用旧的setuptools创建的包,它不支持此语法
enum34;python_版本忽略此错误,如果您正试图这样做,则不能将websockets与Apache/mod_wsgi一起使用。我没有使用Apache/mod_wsgi,我应该在帖子(我现在将对其进行编辑)中指出此设置在本地主机上工作。如果您没有使用mod_wsgi,为什么它会在你包含的错误日志中显示mod_wsgi错误。你是100%正确的Graham。尽管我自己没有安装mod_wsgi,但我没有意识到elastic beanstalk python平台本身就运行它。谢谢来源:谢谢temoto!使用最新版本的eventlet绕过了我遇到的运行时错误。EB实例现在运行,但套接字消息不会发送,因为我的部署设置不正确。首先,你的教程很棒!其次,第一个错误与SocketIO无关。我现在正在研究如何以正确的方式部署到Flask SocketIO。谢谢你的回复!