【问题标题】:Failed flask heroku deployment烧瓶 Heroku 部署失败
【发布时间】:2022-02-15 00:06:02
【问题描述】:

我正在尝试在 Heroku 上托管一个 Flask Web 应用程序,同时我使用以下步骤来托管我的 Web 应用程序:

{git init
git add .
git commit -m "Initial commmit"

heroku create bukkit-list
git remote -v
git push heroku master}

完成所有这些操作后,我的终端完全没有错误,但烧瓶应用程序仍然无法正常工作。 Heroku 的日志如下所示。

2022-02-12T09:27:20.056100+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=bukkit-list.herokuapp .com request_id=cd77d2eb-110d-4943-bae1-18601c9f90b7 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:27:20.601039+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=bukkit- list.herokuapp.com request_id=5fe216d1-0f09-4777-8c6f-bee6b4b53f74 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:27:29.589547+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=bukkit-list.herokuapp .com request_id=169389de-b2ed-43a3-ae8e-1203558e9c86 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:27:47.095193+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=bukkit-list.herokuapp .com request_id=316fd6b2-9ffc-40ea-bee5-f0b3630a2948 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:27:48.317531+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=bukkit- list.herokuapp.com request_id=6416476f-2e45-4dd2-a2f9-85fdcccb5883 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:28:17.730376+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=bukkit-list.herokuapp .com request_id=3a7058d4-9796-4a62-8ec5-4be44728f638 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

2022-02-12T09:28:18.395460+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=bukkit- list.herokuapp.com request_id=57d66c4d-8fe9-4801-8d9d-a65d9986b808 fwd="103.79.250.41" dyno= connect= service= status=503 bytes= protocol=https

我的 app.py 代码

from flask import Flask, redirect, render_template, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class Task(db.Model):
   sno = db.Column(db.Integer, primary_key = True)
   title = db.Column(db.String(200), nullable=False)
   desc = db.Column(db.String(500), nullable=False)

   def __repr__(self) -> str:
       return f'{self.title} - {self.sno}'

# Routes
@app.route('/')
def home():
    return render_template('home.html')

# Task list area ==========================================
@app.route('/taskList')
def taskList():
    taskList = Task.query.all()
    return render_template('taskList.html', taskList=taskList)

@app.route('/delete/<int:sno>')
def delete(sno):
    task = Task.query.filter_by(sno=sno).first()
    db.session.delete(task)
    db.session.commit()
    return redirect('/taskList')

@app.route('/addTask')
def addTask():
    return redirect('/TaskEditor_Add')

# Add task area =============================================
@app.route('/TaskEditor_Add', methods=["GET", "POST"])
def TaskEditor_Add():
    state = "Add - Task"
    if request.method == "POST":
        title = request.form['title']
        desc = request.form['desc']
        if (title.isspace() or desc.isspace()):
            state = "Invalid Task"
        else:
            task = Task(title=title, desc=desc)
            db.session.add(task)
            db.session.commit()
            state = "Task added"
            return redirect("/taskList")

    return render_template('addTask.html', state=state)

# Update an existing todo area ================================
@app.route('/TaskEditor_Edit/<int:sno>', methods=["POST", "GET"])
def TaskEditor_Edit(sno):
    task = Task.query.filter_by(sno=sno).first()
    state="Edit Task"
    if request.method == "POST":
        title = request.form['title']
        desc = request.form['desc']
        if (title.isspace() or desc.isspace()):
            state = "Invalid Task"
        else:
           task.title = title
           task.desc = desc
           db.session.add(task)
           db.session.commit()
           return redirect('/taskList')

    return render_template('editTask.html', task=task, state=state)


if __name__ == "__main__":
    app.run(debug=True)    ```

procfile 只有下面这行代码:

web:gunicorn app:app

【问题讨论】:

    标签: python flask heroku gunicorn


    【解决方案1】:

    几天前,我还在 Heroku 中使用 Flask 和 SQL 数据库部署了一个网站,我也遇到了类似的错误。首先,在Procfile 中,在web:gunicorn 之间添加一个空格,如下所示:

    web: gunicorn hello:app - 这就是他们在their documentation 中的写法。

    其次,确保您的 requirement.txt 文件已更新并在其中显示 gunicorn。

    尝试将数据库更改为PostgreSQL。您可以在资源选项卡中配置一个:

    在您的代码中,您需要更改以下几行:

    import os
    uri = os.getenv("DATABASE_URL")
    if uri and uri.startswith("postgres://"):
        uri = uri.replace("postgres://", "postgresql://", 1)
    
    app.config['SQLALCHEMY_DATABASE_URI'] = uri
    

    您可以了解为什么需要添加这些 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-22
      • 2019-04-24
      • 2021-10-17
      • 2020-11-24
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多