推送零钱后,Heroku应用程序崩溃了。非常困惑
问题内容:
我在Python和Flask中使用Heroku。在我更新python应用程序文件中的几行之前,我的应用程序运行良好。该应用程序在本地运行良好,但是当我尝试访问我的应用程序时出现以下错误:
“应用程序中发生错误,无法为您的页面提供服务。请稍后再试。如果您是应用程序所有者,请检查日志以获取详细信息。”
我的日志如下所示:
2012-10-03T17:40:26+00:00 heroku[web.1]: Process exited with status 1
2012-10-03T17:40:26+00:00 heroku[web.1]: State changed from starting to crashed
2012-10-03T17:51:25+00:00 heroku[web.1]: State changed from crashed to starting
2012-10-03T17:51:26+00:00 heroku[web.1]: Starting process with command `python presentation.py`
2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site
我也不再能够通过heroku运行python:
Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run python
Running `python` attached to terminal... up, run.1
ImportError: No module named site
我试图做的下一件事是检查我的环境变量:
Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config
=== infinite-fortress-4866 Config Vars
LANG: en_US.UTF-8
LD_LIBRARY_PATH: /app/.heroku/vendor/lib
LIBRARY_PATH: /app/.heroku/vendor/lib
PATH: /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin
PYTHONHASHSEED: random
PYTHONHOME: /app/.heroku/venv/
PYTHONPATH: /app/
PYTHONUNBUFFERED: true
但是,当我尝试查看库目录时,会得到如下信息:
Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run ls /app/.heroku/vendor/lib
Running `ls /app/.heroku/vendor/lib` attached to terminal... up, run.1
ls: cannot access /app/.heroku/vendor/lib: No such file or directory
我现在不确定该从哪里进行。我想念我的应用程序,请帮忙!
附加信息:
当我将以下行添加到我的app.py代码中时,所有问题都开始了:
@app.route('/my_fb_graph',methods=['GET','POST'])
def my_fb_graph():
return render_template('my_fb_graph.html')
当我推送代码时,该应用程序不再起作用。然后,我删除了这些代码行,再次推送了代码,仍然遇到相同的错误。我要做的下一件事是完全删除app.py文件,并尝试一个仍然无法正常工作的小型测试代码。
问题的根源似乎是错误:
2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site
问题答案:
我能够解决问题,但仍然不知道为什么会首先发生!
经过大量的实验,我最终在Heroku上设置了一个全新的应用程序。我在新应用程序中检查了环境变量,并得到以下信息:
Cinnas-MacBook-Pro:thawing-temple-4323 cinna$ heroku config
=== thawing-temple-4323 Config Vars
FACEBOOK_APP_ID: ***
FACEBOOK_SECRET: ***
PATH: bin:/usr/local/bin:/usr/bin:/bin
PYTHONUNBUFFERED: true
检查我的原始应用程序(损坏的应用程序)后,我意识到新的环境变量以某种方式在我的上一次推送中添加了,如日志所示:
2012-10-04T04:20:04+00:00 heroku[api]: Add PYTHONUNBUFFERED, PYTHONPATH, PYTHONHOME, LANG, LD_LIBRARY_PATH, PATH, PYTHONHASHSEED, LIBRARY_PATH config by ***@***
并检查我的环境变量:
Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config
=== infinite-fortress-4866 Config Vars
LANG: en_US.UTF-8
LD_LIBRARY_PATH: /app/.heroku/vendor/lib
LIBRARY_PATH: /app/.heroku/vendor/lib
PATH: /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin
PYTHONHASHSEED: random
PYTHONHOME: /app/.heroku/venv/
PYTHONPATH: /app/
PYTHONUNBUFFERED: true
我使用以下命令删除了这些新变量:
heroku config:remove PYTHONPATH PYTHONHOME LANG LD_LIBRARY_PATH PYTHONHASHSEED LIBRARY_PATH
然后我的应用又开始工作了。我一直在推送更多代码,并且此问题不再发生。
我仍然很好奇为什么/为什么要首先添加这些变量,因为我所做的就是进行git push。