1 python heroku flask gunicorn
我刚刚第一次将我的应用程序推送到heroku但是当我访问页面时仍然遇到"应用程序错误"..我不熟悉heroku并且似乎无法在帮助/开发中心链接中找到任何引用.
转到heroku日志我得到这个:
C:\Users\XXX\Desktop\xxxxx.folder>heroku logs
2013-10-14T02:32:18.578976+00:00 heroku[api]: Enable Logplex by EMAIL@email.com
2013-10-14T02:32:18.597277+00:00 heroku[api]: Release v2 created by EMAIL@email.com
2013-10-14T02:32:46+00:00 heroku[slug-compiler]: Slug compilation started
2013-10-14T02:33:10.309086+00:00 heroku[api]: Scale to web=1 by EMAIL@email.com
2013-10-14T02:33:10.356490+00:00 heroku[api]: Deploy 9edccd8 by EMAIL@email.com
2013-10-14T02:33:10.375197+00:00 heroku[api]: Release v3 created by EMAIL@email.com
2013-10-14T02:33:10+00:00 heroku[slug-compiler]: Slug compilation finished
2013-10-14T02:33:14.369318+00:00 heroku[web.1]: Starting process with command `gunicorn xxxxx:app`
2013-10-14T02:33:15.336306+00:00 app[web.1]: 2013-10-14 02:33:15 [2] [INFO] Starting gunicorn 18.0
2013-10-14T02:33:15.337257+00:00 app[web.1]: 2013-10-14 02:33:15 [2] [INFO] Listening at: http://0.0.0.0:36245 (2)
2013-10-14T02:33:15.337821+00:00 app[web.1]: 2013-10-14 02:33:15 [2] [INFO] Using worker: sync
2013-10-14T02:33:15.354973+00:00 app[web.1]: 2013-10-14 02:33:15 [7] [INFO] Booting worker with pid: 7
2013-10-14T02:33:15.360482+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
2013-10-14T02:33:15.360482+00:00 app[web.1]: self.callable = self.load()
2013-10-14T02:33:15.360482+00:00 app[web.1]: Traceback (most recent call last):
2013-10-14T02:33:15.360482+00:00 app[web.1]: 2013-10-14 02:33:15 [7] [ERROR] Exception in worker process:
2013-10-14T02:33:15.360482+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
2013-10-14T02:33:15.360482+00:00 app[web.1]: worker.init_process()
2013-10-14T02:33:15.360482+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2013-10-14T02:33:15.360482+00:00 app[web.1]: return self.load_wsgiapp()
2013-10-14T02:33:15.360482+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
2013-10-14T02:33:15.360482+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
2013-10-14T02:33:15.360658+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
2013-10-14T02:33:15.360658+00:00 app[web.1]: return util.import_app(self.app_uri)
2013-10-14T02:33:15.360658+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
2013-10-14T02:33:15.360658+00:00 app[web.1]: ImportError: No module named xxxxx
2013-10-14T02:33:15.360658+00:00 app[web.1]: __import__(module)
2013-10-14T02:33:15.360658+00:00 app[web.1]: Traceback (most recent call last):
2013-10-14T02:33:15.360658+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
2013-10-14T02:33:15.360658+00:00 app[web.1]: worker.init_process()
2013-10-14T02:33:15.360658+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
2013-10-14T02:33:15.360658+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2013-10-14T02:33:15.360814+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
2013-10-14T02:33:15.360814+00:00 app[web.1]: self.callable = self.load()
2013-10-14T02:33:15.360814+00:00 app[web.1]: return util.import_app(self.app_uri)
2013-10-14T02:33:15.360814+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
2013-10-14T02:33:15.360814+00:00 app[web.1]: return self.load_wsgiapp()
2013-10-14T02:33:15.360814+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
2013-10-14T02:33:15.360814+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
2013-10-14T02:33:15.360814+00:00 app[web.1]: __import__(module)
2013-10-14T02:33:15.360814+00:00 app[web.1]: ImportError: No module named xxxxx
2013-10-14T02:33:15.360814+00:00 app[web.1]: 2013-10-14 02:33:15 [7] [INFO] Worker exiting (pid: 7)
2013-10-14T02:33:15.506842+00:00 app[web.1]: 2013-10-14 02:33:15 [2] [INFO] Shutting down: Master
2013-10-14T02:33:15.506842+00:00 app[web.1]: 2013-10-14 02:33:15 [2] [INFO] Reason: Worker failed to boot.
2013-10-14T02:33:16.807631+00:00 heroku[web.1]: Process exited with status 3
2013-10-14T02:33:16.808898+00:00 heroku[web.1]: State changed from starting to crashed
2013-10-14T02:33:16.810378+00:00 heroku[web.1]: State changed from crashed to starting
2013-10-14T02:33:20.292603+00:00 heroku[web.1]: Starting process with command `gunicorn xxxxx:app`
2013-10-14T02:33:21.415595+00:00 app[web.1]: 2013-10-14 02:33:21 [2] [INFO] Starting gunicorn 18.0
2013-10-14T02:33:21.424049+00:00 app[web.1]: 2013-10-14 02:33:21 [2] [INFO] Listening at: http://0.0.0.0:21832 (2)
2013-10-14T02:33:21.424357+00:00 app[web.1]: 2013-10-14 02:33:21 [2] [INFO] Using worker: sync
2013-10-14T02:33:21.451415+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
2013-10-14T02:33:21.451415+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
2013-10-14T02:33:21.446578+00:00 app[web.1]: 2013-10-14 02:33:21 [7] [INFO] Booting worker with pid: 7
2013-10-14T02:33:21.451415+00:00 app[web.1]: 2013-10-14 02:33:21 [7] [ERROR] Exception in worker process:
2013-10-14T02:33:21.451415+00:00 app[web.1]: Traceback (most recent call last):
2013-10-14T02:33:21.451415+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
2013-10-14T02:33:21.451415+00:00 app[web.1]: return self.load_wsgiapp()
2013-10-14T02:33:21.451582+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
2013-10-14T02:33:21.451582+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
2013-10-14T02:33:21.451415+00:00 app[web.1]: self.callable = self.load()
2013-10-14T02:33:21.451415+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
2013-10-14T02:33:21.451582+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
2013-10-14T02:33:21.451582+00:00 app[web.1]: worker.init_process()
2013-10-14T02:33:21.451582+00:00 app[web.1]: return util.import_app(self.app_uri)
2013-10-14T02:33:21.451582+00:00 app[web.1]: __import__(module)
2013-10-14T02:33:21.451415+00:00 app[web.1]: worker.init_process()
2013-10-14T02:33:21.451765+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
2013-10-14T02:33:21.451765+00:00 app[web.1]: return util.import_app(self.app_uri)
2013-10-14T02:33:21.451765+00:00 app[web.1]: 2013-10-14 02:33:21 [7] [INFO] Work
er exiting (pid: 7)
2013-10-14T02:33:21.451582+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
2013-10-14T02:33:21.451582+00:00 app[web.1]: Traceback (most recent call last):
2013-10-14T02:33:21.451765+00:00 app[web.1]: self.callable = self.load()
2013-10-14T02:33:21.451765+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
2013-10-14T02:33:21.451765+00:00 app[web.1]: return self.load_wsgiapp()
2013-10-14T02:33:21.451415+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2013-10-14T02:33:21.451765+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
2013-10-14T02:33:21.451582+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2013-10-14T02:33:21.451765+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
2013-10-14T02:33:21.451765+00:00 app[web.1]: __import__(module)
2013-10-14T02:33:21.451582+00:00 app[web.1]: ImportError: No module named xxxxx
2013-10-14T02:33:21.451765+00:00 app[web.1]: ImportError: No module named xxxxx
2013-10-14T02:33:21.614863+00:00 app[web.1]: 2013-10-14 02:33:21 [2] [INFO] Shutting down: Master
2013-10-14T02:33:21.614999+00:00 app[web.1]: 2013-10-14 02:33:21 [2] [INFO] Reason: Worker failed to boot.
2013-10-14T02:33:22.891685+00:00 heroku[web.1]: State changed from starting to crashed
2013-10-14T02:33:22.880946+00:00 heroku[web.1]: Process exited with status 3
2013-10-14T02:33:56.309306+00:00 heroku[api]: Scale to web=1 by EMAIL@email.com
2013-10-14T02:34:38.709036+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:35:26.497306+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:35:29.339881+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:34:35.682537+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:34:36.970547+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:35:27.860267+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:36:45.618318+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:37:13.316055+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:37:16.020891+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:37:54.849200+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
2013-10-14T02:37:14.772425+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxxxx.herokuapp.com fwd="68.8.230.232" dyno= connect= service= status=503 bytes=
Run Code Online (Sandbox Code Playgroud)
我不太确定这些意味着什么.但我认为它与gunicorn连接有关?有人可以帮助指出问题以及如何解决这个问题吗?
注意:没有ImportError:没有名为xxxxx的模块 - > xxxxx是我的应用程序的名称..它也是我在procfile中使用的(例如xxxxx:app).这是问题吗?
编辑:这是一个Flask应用程序,所以这里是我当前的结构
-static
--css
--img
--js
-templates
--index.html
--layout.html
-.gitignore
-Procfile
-requirements.txt
-app.py
Run Code Online (Sandbox Code Playgroud)
我的Procfile:
web: gunicorn app:app
Run Code Online (Sandbox Code Playgroud)
Edit2:这是我的app.py文件
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def main():
return render_template("index.html")
@app.route('/projects')
def projects():
...
...
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
Mig*_*uel 11
配置Procfile时要说:
web: gunicorn xxxxx:app
Run Code Online (Sandbox Code Playgroud)
你正在给Heroku运行的命令.在转向Heroku之前,应确保可以在开发计算机上运行此命令.
传递给gunicorn的"xxxxx"参数是gunicorn将导入以获取应用程序对象的包或模块.如果您在app.py中创建应用程序,那么应该是"app"(不应包含.py扩展名).您得到的错误是因为gunicorn发出了一个import xxxxxx明显失败的错误,因为您没有使用该名称定义包或模块.
在冒号的另一侧,您必须输入您的应用程序的名称.例如,如果app.py文件中包含以下代码:
app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)
那你的申请名是app.对于此设置,Procfile应为:
web: gunicorn app:app
Run Code Online (Sandbox Code Playgroud)
然后gunicorn会发出一个import app(左侧app),然后寻找一个app在那里命名的符号(右侧app).
我希望这有帮助.