python - Web 应用程序可在本地计算机上运行,​​但不能在 Heroku 上运行

标签 python heroku web.py heroku-postgres procfile

我在本地机器上用 Python 制作了我的第一个 Web 应用程序,该应用程序链接到 postgres 数据库。在我的本地机器上,Web 应用程序可以运行,所以我的下一步是将应用程序放到 Internet 上。

这是我开始使用 Heroku 的地方,在学习了一些教程之后,我将我的 Web 应用程序推送到 Heroku 上并推送了我的数据库的副本。我修改了我的代码,现在它指向 Heroku 上的数据库,而不是我的本地计算机。

但是,在我的 procfile 中尝试了许多不同的变体之后,我的网站上仍然出现应用程序错误。运行:heroku logs --tail,我得到以下错误日志...

2016-03-06T07:24:19.684867+00:00 heroku[web.1]: Starting process with command `python bin/app.py /usr/local/bin:/usr/bin:/bin`

2016-03-06T07:24:22.761469+00:00 app[web.1]: ('test@gmail.com                                    ', '$1$Kp635oRe$xuPE1/iVdvJcAUzS5LIRF.                ', 36, 'test                                              ')

2016-03-06T07:24:23.391570+00:00 app[web.1]: (5, datetime.datetime(2015, 8, 28, 21, 0), datetime.datetime(2015, 8, 20, 8, 0), datetime.datetime(2015, 8, 25, 17, 0), 'To be decided                                     ', None, 'To be decided                                     ', None, 'Final                                             ')

2016-03-06T07:24:23.391582+00:00 app[web.1]: 2015-08-28 21:00:00

2016-03-06T07:24:23.391681+00:00 app[web.1]: 5

2016-03-06T07:24:24.047123+00:00 app[web.1]: (5, datetime.datetime(2015, 8, 28, 21, 0), datetime.datetime(2015, 8, 20, 8, 0), datetime.datetime(2015, 8, 25, 17, 0), 'To be decided                                     ', None, 'To be decided                                     ', None, 'Final                                             ')

2016-03-06T07:24:24.047165+00:00 app[web.1]: 5

2016-03-06T07:24:24.047135+00:00 app[web.1]: 2015-08-28 21:00:00

2016-03-06T07:24:24.705463+00:00 app[web.1]: (5, datetime.datetime(2015, 8, 28, 21, 0), datetime.datetime(2015, 8, 20, 8, 0), datetime.datetime(2015, 8, 25, 17, 0), 'To be decided                                     ', None, 'To be decided                                     ', None, 'Final                                             ')

2016-03-06T07:24:24.705478+00:00 app[web.1]: 2015-08-28 21:00:00

2016-03-06T07:24:29.129053+00:00 app[web.1]:   File "bin/app.py", line 195, in <module>

2016-03-06T07:24:29.129044+00:00 app[web.1]: Traceback (most recent call last):

2016-03-06T07:24:29.129139+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/application.py", line 313, in run

2016-03-06T07:24:29.129112+00:00 app[web.1]:     app.run()

2016-03-06T07:24:29.129252+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/wsgi.py", line 54, in runwsgi

2016-03-06T07:24:29.129294+00:00 app[web.1]:     return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))

2016-03-06T07:24:29.129248+00:00 app[web.1]:     return wsgi.runwsgi(self.wsgifunc(*middleware))

2016-03-06T07:24:29.129344+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/net.py", line 76, in validip

2016-03-06T07:24:29.129375+00:00 app[web.1]:     port = int(port)

2016-03-06T07:24:29.129400+00:00 app[web.1]: ValueError: invalid literal for int() with base 10: '/usr/local/bin:/usr/bin:/bin'

2016-03-06T07:24:29.775276+00:00 heroku[web.1]: Process exited with status 1

2016-03-06T07:24:29.782331+00:00 heroku[web.1]: State changed from starting to crashed

2016-03-06T11:27:22.484435+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=limeuro2016.herokuapp.com request_id=0567035b-6419-4c45-abaa-aea7d0be7206 fwd="90.210.194.244" dyno= connect= service= status=503 bytes=

2016-03-06T11:27:22.976331+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=limeuro2016.herokuapp.com request_id=aa3d55d0-7015-4949-8b86-49f6c1dcc68d fwd="90.210.194.244" dyno= connect= service= status=503 bytes=

显然我有很多愚蠢的打印语句在运行,我需要整理一下,但这不应该是这个错误的原因。我认为这与我的 procfile 有关,因为 'port = int(port)' 但我是不是找错地方了?

我的 procfile 读取...

web: python bin/app.py $PATH
port = int(os.environ.get('PORT', 8080))
app.run(host='0.0.0.0', port=port)

我将不胜感激,因为过去两周我一直在尝试自己研究解决方案,但遇到了困难!为什么它在我的本地机器上工作而不是 Heroku!?!

最佳答案

根据报错信息,我猜测是环境变量PORT设置为'/usr/local/bin:/usr/bin:/bin' .

使用命令 heroku run printenv 列出您的环境变量。

此外,我相信您的 procfile 应该以 web: python bin/app.py ${PORT} 开头,而不是 PATH可能是什么将 PORT 设置为路径。

关于python - Web 应用程序可在本地计算机上运行,​​但不能在 Heroku 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826487/

相关文章:

python - uWSGI和Nginx中MySQL连接出现502错误

python - 为 Django 获取 JSON 数据的最佳 JSON 库?

python - 用三角方法计算傅里叶级数

python - 返回其类实例的静态方法

ruby-on-rails - 如何让 rufus-scheduler 与部署到 Heroku 的 Rails 应用程序一起工作?

swift - 将 Vapor 应用程序部署到 Heroku 失败,因为 "error: value of type ' URLSession' 没有成员 'data' ”

javascript - 如何在已部署的 Heroku 应用程序上安装我的 Bower 依赖项?

python - 解包到Python中的list append方法

python - 如何让两个不同的python脚本在同一个端口上运行?

python - 带有 web.py 的 Restful API