404在Heroku上运行Flask应用程序时出错

时间:2017-11-06 12:45:04

标签: python python-3.x heroku flask

我尝试使用Flask和Python构建一个非常简单的Flask应用程序。没有数据库或其他插件。应用程序在我的本地计算机上运行完全正常,我可以无错误地导航,但是当我部署到Heroku时,我尝试访问的任何页面都会收到404 Not Found错误,包括索引。

这是我网站的布局: Site Layout

mbtaCrTracker.py是我应用的根目录。这是目前的样子:

from mbtaCrTracker import app
from mbtaCrTracker import views
app.run(host='0.0.0.0', debug=True)

这是我的_ init _.py:

from flask import Flask
app = Flask(__name__)

这是我的views.py:

from flask import render_template, request, redirect
from mbtaCrTracker import app
from getTrainInfo import getTrainInfo

@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')

@app.route('/map', methods=['GET'])
def findTrain():
    line = request.args.get('line')
    direction = request.args.get('direction')
    coords = getTrainInfo(line, direction)
    return render_template('map.html', coords=coords)

这是我的Procfile:

web: gunicorn mbtaCrTracker:app --log-file=-

我认为一切都设置正确,因为我能够在本地运行应用程序而不会出现任何问题。当我部署到Heroku时,我可以看到该站点已启动,而不是崩溃,并且我没有收到任何服务器错误,只是未找到错误。这几乎就好像我的路线不起作用或类似的东西。

这是我在Heroku日志中看到的,当我尝试访问我网站的主页时:

2017-11-06T12:23:17.717474+00:00 heroku[web.1]: Starting process with command `gunicorn mbtaCrTracker:app --log-file=-`
2017-11-06T12:23:19.795333+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Starting gunicorn 19.7.1
2017-11-06T12:23:19.796263+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Listening at: http://0.0.0.0:43494 (4)
2017-11-06T12:23:19.796405+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [4] [INFO] Using worker: sync
2017-11-06T12:23:19.800312+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [8] [INFO] Booting worker with pid: 8
2017-11-06T12:23:19.810431+00:00 app[web.1]: [2017-11-06 12:23:19 +0000] [9] [INFO] Booting worker with pid: 9
2017-11-06T12:23:21.351354+00:00 heroku[web.1]: State changed from starting to up
2017-11-06T12:23:29.564508+00:00 heroku[router]: at=info method=GET path="/" host=mbtacrtracker.herokuapp.com request_id=cdae33d9-9f9d-4568-b619-b6c10bb34e9b fwd="172.58.216.112" dyno=web.1 connect=1ms service=19ms status=404 bytes=386 protocol=https  

思想?

1 个答案:

答案 0 :(得分:0)

以下是在Heroku上成功部署的一些步骤:

mbtaCrTracker.py重命名为app.py

mbtaCrTracker的内容剪切到根目录。删除mbtaCrTracker目录。

app.py应包含:

from flask import Flask, render_template, request, url_for, redirect
from getTrainInfo import getTrainInfo

app = Flask(__name__)

@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')

@app.route('/map', methods=['GET'])
def findTrain():
    line = request.args.get('line')
    direction = request.args.get('direction')
    coords = getTrainInfo(line, direction)
    return render_template('map.html', coords=coords)

if __name__ == '__main__':
    app.run()

Procfile包含:

web: gunicorn app:app

部署此功能的一种简单方法是将其推送到github,然后将github存储库与heroku中的应用相关联。