python - Heroku 应用程序在推送小更改后崩溃。非常困惑

标签 python heroku flask

我将 Heroku 与 Python 和 Flask 结合使用。在我更新 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。

关于python - Heroku 应用程序在推送小更改后崩溃。非常困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717903/

相关文章:

c# - 从 C# 启动 Wing 的问题

ruby-on-rails - Heroku 上的 Paypal merchant-sdk-ruby 授权问题

ruby-on-rails - 关注不在 Rails 5 中加载

python - 与 Flask 或其他 Python webframework 并行生成和处理 Websocket 输出数据的后台线程

python - docker-compose 卷未正确安装

python - Pandas 按两列分组并在第三列中计算共享值

Python:如何计算geotiff数组中值为1的相邻值?

python - 如何在 Python 中查找 DataFrame 的一列中也出现在另一列中的元素

postgresql - 你如何告诉 Heroku 忽略开发组中的 Sqlite gem

flask - 在flask restful/plus 中使用可变键编码字典