Flask app在本地运行正常,但在Heroku上访问db时出错

时间:2014-06-29 19:55:42

标签: python heroku flask peewee flask-peewee

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

任何想法有什么不对?有没有办法获得更有用的痕迹?

0 个答案:

没有答案