【问题标题】:Flask App Runs Locally but returns application error on heroku serverFlask App 在本地运行,但在 heroku 服务器上返回应用程序错误
【发布时间】:2021-08-07 22:24:20
【问题描述】:
import os
import uuid

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

from utils import get_parsed_file

app = Flask(__name__)
IS_PROD = os.environ.get("IS_PROD", False)


def allowed_file(filename):
    allowed_filetypes = ['txt', 'json']
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_filetypes


@app.route('/parse-file', methods=['POST'])
def parse_file():
    file = request.files['0']
    if not allowed_file(file.filename):
        response = {
            "success": False,
            "error_message": "Please upload a valid file!",
        }
    else:
        filename, file_extension = os.path.splitext(file.filename)
        filename = str(uuid.uuid4())
        tmp_filepath = os.path.join("conversations", filename + file_extension)
        file.save(tmp_filepath)
        try:
            parsed_items, persons_list = get_parsed_file(tmp_filepath)
            response = {
                "success": True,
                "chat": parsed_items,
                "users": persons_list
            }
        except Exception as e:
            response = {
                "success": False,
                "error_message": str(e)
            }

        os.remove(tmp_filepath)
    return jsonify(response), 200


@app.route('/', methods=['GET'])
def main():
    ctx = { 
        'is_prod': IS_PROD
    }
    if request.args.get('redirect'):
        message = "Sorry, we couldn't find the page"
        return render_template("index.html", data=ctx, error_message=message)
    else:
        return render_template("index.html", data=ctx)


@app.errorhandler(404)
def not_found(e):
    return redirect(url_for('main', redirect='home'))


if __name__ == "__main__":
    app.run(debug=not IS_PROD, host="0.0.0.0", threaded=True)

当我将主机设置为 127.0.0.1 时,应用程序运行良好,但是当我将其部署在主机为 0.0.0.0heroku 服务器上时,它会引发应用程序错误。当我尝试使用 heroku-cli 调试错误时,它显示,

2021-05-18T16:18:57.000000+00:00 app[api]: Build succeeded
2021-05-18T16:19:01.686752+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=                  GET path="/" host=xport-view.herokuapp.com request_id=e7a62471-dafc-4047-814c-e71e816542a8 fw                  d="202.142.114.99" dyno= connect= service= status=503 bytes= protocol=https
2021-05-18T16:19:02.592156+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=                  GET path="/favicon.ico" host=xport-view.herokuapp.com request_id=d7e97241-6cc4-4246-94ac-3634                  69d34c14 fwd="202.142.114.99" dyno= connect= service= status=503 bytes= protocol=https
2021-05-18T16:26:24.627969+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=                  GET path="/" host=xport-view.herokuapp.com request_id=09e1ded1-95af-4420-a78c-061335d2a632 fw                  d="202.142.114.99" dyno= connect= service= status=503 bytes= protocol=http
2021-05-18T16:26:25.203323+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=                  GET path="/favicon.ico" host=xport-view.herokuapp.com request_id=11ff414a-5714-4ce9-aab6-a1f5                  54f9ad92 fwd="202.142.114.99" dyno= connect= service= status=503 bytes= protocol=http

请帮助或提出任何建议,谢谢!

【问题讨论】:

    标签: python flask heroku getmethod


    【解决方案1】:

    这通常发生在procfile 出现错误时。是不是不小心设置了静态端口?

    尝试像这样修改procfile或cli命令

    web: gunicorn --bind 0.0.0.0:$PORT flaskapp:app
    

    确保您没有硬设置端口并且web 后面没有空格。

    【讨论】:

    • 不!我已经更改了 procfile 但它不起作用,同样的事情正在发生它引发应用程序错误
    • 是否抛出同样的错误? gunicorn 是您的 requirments.txt 文件的一部分吗?
    • 是的,它是requirements.txt 文件的一部分。 ``` Click==7.0 entrypoints==0.3 flake8==3.7.7 Flask==1.0.2 gunicorn==19.9.0 itsdangerous==1.1.0 Jinja2==2.11.3 MarkupSafe==1.1.1 mccabe== 0.6.1 pycodestyle==2.5.0 pyflakes==2.1.1 python-dateutil==2.8.0 六==1.12.0 Werkzeug==0.15.3 ```
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2019-05-24
    • 2016-10-18
    • 2020-11-29
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多