0

我有一个小型 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变量在生产中是否正确设置,并且确实如此。

有什么想法有什么问题吗?有没有办法获得更有用的跟踪?

4

0 回答 0