python - 在 AWS Elastic Beanstalk 上运行 Python Flask 应用程序时出现异常

标签 python flask amazon-elastic-beanstalk

我在尝试在 EB 上运行我的 python Web 应用程序时遇到问题。它在本地运行良好,但在 EB 上运行时出现以下异常。问题似乎是它遇到了异常,但堆栈跟踪是在原始错误之后发生的错误,因此我无法真正确定根本原因是什么:

Exception on /admin GET
Traceback (most recent call last):
File "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in     wsgi_app
response = self.full_dispatch_request()
File "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in     full_dispatch_request
rv = self.handle_user_exception(e)
File "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in     full_dispatch_request
rv = self.dispatch_request()
File "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functionshttp://rule.endpoint(**req.view_args)
File "/opt/python/run/venv/lib/python2.7/site-packages/sandman/sandman.py", line 459, in get_collection
cls = endpoint_class(collection)
File "/opt/python/run/venv/lib/python2.7/site-packages/sandman/sandman.py", line 185, in endpoint_class
cls = current_app.class_referencescollection
File "/opt/python/run/venv/lib/python2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Flask' object has no attribute 'class_references'

当我通过 SSH 连接到我的实例后在端口 5000 上手动启动应用程序并尝试从控制台加载同一页面时,我没有收到任何错误(并且保存的文件包含正确的 HTML):

wget http://127.0.0.1:5000/admin
--2014-03-23 17:01:13-- http://127.0.0.1:5000/admin
Connecting to 127.0.0.1:5000... connected.
HTTP request sent, awaiting response... 127.0.0.1 - - 23/Mar/2014 17:01:13 "GET /admin     HTTP/1.1" 301 -
301 MOVED PERMANENTLY
Location: http://127.0.0.1:5000/admin/ following
--2014-03-23 17:01:13-- http://127.0.0.1:5000/admin/
Connecting to 127.0.0.1:5000... connected.
HTTP request sent, awaiting response... 127.0.0.1 - - 23/Mar/2014 17:01:13 "GET /admin/     HTTP/1.1" 200 -
200 OK
Length: 1519 (1.5K) text/html
Saving to: ‘admin’

这是我正在运行的Python应用程序代码:http://pastebin.com/qgnWz6aK

最佳答案

我设法使用 Tornado 解决了这个问题(尽管我仍然不确定根本问题是什么):

from sandman import app
from sandman.model import activate
import logging
import os, sys
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DB']

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    activate(browser=False)
    app.debug = True
    http_server = HTTPServer(WSGIContainer(app))
    http_server.listen(os.environ['PORT'])
    IOLoop.instance().start()

关于python - 在 AWS Elastic Beanstalk 上运行 Python Flask 应用程序时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594305/

相关文章:

amazon-web-services - 允许基于 URL 和安全组的 HTTP 请求

python - 有向图 - SQLAlchemy ORM

python - Altair 图表上方的动态文本

python - Monkey 在 Python 中修补 C 扩展

python - Jinja2:Flask 的 url_for() 与 Knockout 的 attr 绑定(bind)相结合

amazon-web-services - AWS EBS 上的 ASP.Net Core - 写入权限和 .ebextensions

macos - git:尝试将存储库推送到 Mac 上的 Amazon Elastic Beanstalk 时, 'aws.push' 不是 git 命令

python - 无法写入数据库 psql - INSERT INTO 语法

python - 在 flask 中存储 mysql 服务器凭据的安全方法?

python - Flask:在模板中放置静态 javascript 文件的位置