简体   繁体   English

Flask应用程序无法在部署中运行

[英]Flask application not working on deployment

I have a flask application with the Procfile having the content below 我有一个烧瓶应用程序, Procfile具有以下内容

web: gunicorn app
heroku ps:scale web=1

The application directory structure is as below 应用程序目录结构如下

Shopping List/
   app/
     __init__.py
     other files
   Procfile
   requirements.tx
   app.py
   Designs/
     html files

The content of app.py is as below app.py的内容如下

from flask import Flask, render_template, request, flash
from app.forms import SignIn 

app = Flask(__name__ ,template_folder='Designs')

#set up secret key for crsf
app.secret_key = "M@0$"

@app.route("/", methods = ["GET", "POST"])
def index():
    sigin_form = SignIn()
    if request.method == 'POST':
        if sigin_form.validate() == False:
            flash('Please fill up all fields.')
            return render_template("index.html", form = sigin_form)
        else:
            return render_template("dashboard.html")
    elif request.method == "GET":
        return render_template("index.html", form = sigin_form)

@app.route("/signup")
def signup():
    return render_template("signup.html")

@app.route("/dashboard")
def dashboard():
    return render_template("dashboard.html")

app.run(debug=True )

The Log info received 收到的日志信息

    `2017-08-29T09:10:44.624949+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
2017-08-29T09:10:44.624951+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-08-29T09:10:44.624951+00:00 app[web.1]:     self.load_wsgi()
2017-08-29T09:10:44.624952+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
2017-08-29T09:10:44.624952+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2017-08-29T09:10:44.624954+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-08-29T09:10:44.624954+00:00 app[web.1]:     self.callable = self.load()
2017-08-29T09:10:44.624955+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-08-29T09:10:44.624956+00:00 app[web.1]:     return self.load_wsgiapp()
2017-08-29T09:10:44.624956+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-08-29T09:10:44.624957+00:00 app[web.1]:     return util.import_app(self.app_uri)
2017-08-29T09:10:44.624957+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 356, in import_app
2017-08-29T09:10:44.624958+00:00 app[web.1]:     raise ImportError(msg % (module.rsplit(".", 1)[0], obj))
2017-08-29T09:10:44.624959+00:00 app[web.1]: ImportError: Failed to find application, did you mean 'app:application'?
2017-08-29T09:10:44.625125+00:00 app[web.1]: [2017-08-29 09:10:44 +0000] [8] [INFO] Worker exiting (pid: 8)
2017-08-29T09:10:44.659282+00:00 app[web.1]: [2017-08-29 09:10:44 +0000] [9] [INFO] Booting worker with pid: 9
2017-08-29T09:10:44.665221+00:00 app[web.1]: [2017-08-29 09:10:44 +0000] [9] [ERROR] Exception in worker process
2017-08-29T09:10:44.665224+00:00 app[web.1]: Traceback (most recent call last):
2017-08-29T09:10:44.665225+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app
2017-08-29T09:10:44.665226+00:00 app[web.1]: ModuleNotFoundError: No module named 'app.py'
2017-08-29T09:10:44.665226+00:00 app[web.1]:     __import__(module)
2017-08-29T09:10:44.665227+00:00 app[web.1]:
2017-08-29T09:10:44.665227+00:00 app[web.1]: During handling of the above exception, another exception occurred:
2017-08-29T09:10:44.665228+00:00 app[web.1]:
2017-08-29T09:10:44.665229+00:00 app[web.1]: Traceback (most recent call last):
2017-08-29T09:10:44.665229+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
2017-08-29T09:10:44.665230+00:00 app[web.1]:     worker.init_process()
2017-08-29T09:10:44.665231+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-08-29T09:10:44.665231+00:00 app[web.1]:     self.load_wsgi()
2017-08-29T09:10:44.665233+00:00 app[web.1]:     self.wsgi = self.app.wsgi()
2017-08-29T09:10:44.665234+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-08-29T09:10:44.665232+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
2017-08-29T09:10:44.665234+00:00 app[web.1]:     self.callable = self.load()
2017-08-29T09:10:44.665235+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-08-29T09:10:44.665235+00:00 app[web.1]:     return self.load_wsgiapp()
2017-08-29T09:10:44.665236+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-08-29T09:10:44.665236+00:00 app[web.1]:     return util.import_app(self.app_uri)
2017-08-29T09:10:44.665237+00:00 app[web.1]:     raise ImportError(msg % (module.rsplit(".", 1)[0], obj))
2017-08-29T09:10:44.665237+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 356, in import_app
2017-08-29T09:10:44.665417+00:00 app[web.1]: [2017-08-29 09:10:44 +0000] [9] [INFO] Worker exiting (pid: 9)
2017-08-29T09:10:44.665242+00:00 app[web.1]: ImportError: Failed to find application, did you mean 'app:application'?

I don't know what am doing wrong. 我不知道在做什么错。 The app is running okay locally. 该应用程序在本地可以正常运行。 Any help gladly appreciated. 任何帮助都非常感谢。

Try changing : 尝试更改:

web: gunicorn app
heroku ps:scale web=1

to

web: gunicorn app:app
heroku ps:scale web=1

Also you can see this example walkthrough on github 您也可以在github上看到此示例演练

Try - web: gunicorn app:app . 尝试web: gunicorn app:app (The first app is the module name, while the second is the variable name.) (第一个app是模块名称,第二个appvariable名称。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM