python - Heroku 模糊堆栈跟踪上的内部服务器错误
问题描述
我已经在 Heroku 上上传了我的网站,但Internal Server Error
即使在本地它工作正常,我也会继续获取。
堆栈跟踪真的很模糊,我无法理解那里到底发生了什么。但是,我尝试在 Heroku CLI 上记录错误并使用heroku logs --tail
设置我的 Flask 应用程序后
app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.ERROR)
档案
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]
推荐阅读
- python - 如果输入图像上有不同的 input_shape,我该如何使用 keras
- linux - 我们可以使用 sed 将一个变量替换为多个变量吗
- python - 正在收集静态文件,但它们不想在本地服务器上工作
- delphi-2010 - 如果它在以前的代码中工作,我如何修复 Delphi 中的访问冲突?
- reactjs - react在android kitkat 4.4.4 webview上不起作用
- r - 替换数据框R中列表中的NULL值
- java - 更改两个布局之间的背景颜色?
- google-chrome - 浏览器显示“已屏蔽相机以保护您的隐私”
- javascript - 如果导航参数中未定义值,如何添加按钮?
- java - 为什么在显示片段后调用 onCreateOptionMenu() 但不将项目添加到工具栏?