我有一个小型Flask应用程序(下面的代码)基本上只是使用peewee来访问Postgres数据库。我在本地运行它时工作正常,但是当我尝试在Heroku上运行它时,我得到一个通用的500内部服务器错误。
这是代码
from flask import Flask
from peewee import *
import logging
import os
import urlparse
app = Flask(__name__)
app.config.from_pyfile('config.py')
urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ['DATABASE_URL'])
DATABASE = {
'name': url.path[1:],
'user': url.username,
'password': url.password,
'host': url.hostname,
'port': url.port,
}
db = PostgresqlDatabase(DATABASE['name'], host=DATABASE['host'], user=DATABASE['user'], port=DATABASE['port'], password=DATABASE['password'])
class Team(Model):
class Meta:
database = db
db_table = 'd_team'
team_id = PrimaryKeyField()
team_name = CharField()
@app.route('/')
def home():
teams = [t.team_name for t in Team.select()]
return str(teams)
这就是我在运行heroku logs
时看到的内容(没什么用处......不确定原因)。
2014-06-29T19:52:20.242902+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-06-29T19:52:23.081153+00:00 heroku[web.1]: Starting process with command `gunicorn main:app`
2014-06-29T19:52:26.240427+00:00 heroku[router]: at=info method=GET path="/" host=infinite-ocean-5904.herokuapp.com request_id=c1c365ba-94a6-4405-9812-23e18fe853c4 fwd="208.72.142.70" dyno=web.1 connect=70ms service=309ms status=500 bytes=244
2014-06-29T19:52:25.067383+00:00 heroku[web.1]: State changed from starting to up
2014-06-29T19:52:22.220811+00:00 heroku[web.1]: Process exited with status 0
我能够变得简单" Hello World"消息显示正常,所以问题似乎是数据库调用。因此,我在本地运行应用程序时尝试访问生产数据库,并且在本地也可以正常工作。我还检查过DATABASE_URL
变量是否在生产中正确设置,并且确实如此。
任何想法有什么不对?有没有办法获得更有用的痕迹?