我已经在Heroku上上传了我的网站,但一直在获取Internal Server Error
,即使在本地它运行良好。
堆栈跟踪非常模糊,我无法了解其中到底发生了什么。然而,我尝试在我的Heroku CLI上记录错误,并使用heroku logs --tail
检索它们
设置我的烧瓶应用程序后
app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.ERROR)
Procfile
web: flask db upgrade; gunicorn run:app
worker: rq worker progresso-tasks
运行heroku logs --tail
后,我得到
2020-07-22T16:01:55.951690+00:00 app[web.1]: [2020-07-22 16:01:55 +0000] [15] [ERROR] Error handling request /
2020-07-22T16:01:55.951715+00:00 app[web.1]: Traceback (most recent call last):
2020-07-22T16:01:55.951716+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
2020-07-22T16:01:55.951717+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2020-07-22T16:01:55.951718+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2020-07-22T16:01:55.951718+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2020-07-22T16:01:55.951719+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2464, in __call__
2020-07-22T16:01:55.951720+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2020-07-22T16:01:55.951720+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2450, in wsgi_app
2020-07-22T16:01:55.951721+00:00 app[web.1]: response = self.handle_exception(e)
2020-07-22T16:01:55.951721+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1867, in handle_exception
2020-07-22T16:01:55.951722+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-07-22T16:01:55.951722+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-07-22T16:01:55.951723+00:00 app[web.1]: raise value
2020-07-22T16:01:55.951723+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
2020-07-22T16:01:55.951724+00:00 app[web.1]: response = self.full_dispatch_request()
2020-07-22T16:01:55.951724+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-07-22T16:01:55.951725+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-07-22T16:01:55.951725+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-07-22T16:01:55.951726+00:00 app[web.1]: reraise(exc_type, exc_value, tb)
2020-07-22T16:01:55.951726+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
2020-07-22T16:01:55.951727+00:00 app[web.1]: raise value
2020-07-22T16:01:55.951727+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-07-22T16:01:55.951728+00:00 app[web.1]: rv = self.dispatch_request()
2020-07-22T16:01:55.951732+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
2020-07-22T16:01:55.951733+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-07-22T16:01:55.951733+00:00 app[web.1]: File "/app/app/main/routes.py", line 23, in home
2020-07-22T16:01:55.951734+00:00 app[web.1]: .order_by(ProjectPortfolio.timestamp.desc()).all()[1]
2020-07-22T16:01:55.951743+00:00 app[web.1]: IndexError: list index out of range
2020-07-22T16:01:55.952127+00:00 app[web.1]: 10.63.145.103 - - [22/Jul/2020:16:01:55 +0000] "GET / HTTP/1.1" 500 0 "-" "-"
2020-07-22T16:01:55.953043+00:00 heroku[router]: at=info method=GET path="/" host=progresso-nel-edilizia.herokuapp.com request_id=a7af4708-c3f2-4aae-9297-5fe404002c0b fwd="109.96.245.144" dyno=web.1 connect=0ms service=119ms status=500 bytes=244 protocol=https
这个错误很特别,因为在我的本地主机上它工作得很好。这是否意味着我的数据库没有得到正确处理?
为我的数据库使用postgresql插件
.order_by(ProjectPortfolio.timestamp.desc()).all()[1]
IndexError: list index out of range
项目树
├── Procfile
├── app
│ ├── __init__.py
│ ├── auth
│ ├── email.py
│ ├── main
│ ├── models.py
│ ├── portfolio
│ ├── static
│ ├── tasks.py
│ └── templates
├── app.db
├── config.py
├── dump.rdb
├── gulpfile.js
├── package-lock.json
├── package.json
├── requirements.txt
├── run.py
├── setup.py
└── tests.py
除此之外,我不知道是什么原因导致了Internal Server Error
,任何想法都将不胜感激!
这主要是因为您的
.order_by(ProjectPortfolio.timestamp.desc()).all()[1]
返回一个空列表,然后要求返回其1索引值,但该值不会退出。它在本地机器上工作的可能原因是,您的ProjectPortfolio正在返回一些数据,而远程数据库的情况并非如此。
我会试试这样的东西:
protfolios = ProjectPortfolio.query.order_by(ProjectPortfolio.timestamp.desc()).all()
if len(portfolios) >= 1:
return portfolios[1]