在Heroku上传web.py应用程序

时间:2013-08-08 03:38:55

标签: heroku web.py

刚开始使用web.py和heroku,所以......

我有这个简单的应用程序,我想上传到heroku,我已按照http://joshuaoiknine.com/post/47196802362/publishing-for-the-web-py-python-framework-to-heroku的说明

这是我的Procfile:

web: python code.py $PATH

但是在我上传到heroku之后,它给了我应用程序错误。 heroku日志告诉我:

2013-08-08T03:27:44.956675+00:00 heroku[web.1]: Starting process with command `python code.py /usr/local/bin:/usr/bin:/bin`
2013-08-08T03:27:45.673358+00:00 app[web.1]: Traceback (most recent call last):
2013-08-08T03:27:45.673358+00:00 app[web.1]:   File "code.py", line 52, in <module>
2013-08-08T03:27:45.673358+00:00 app[web.1]:     app.run()
2013-08-08T03:27:45.673358+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/application.py", line 313, in run
2013-08-08T03:27:45.673358+00:00 app[web.1]:     return wsgi.runwsgi(self.wsgifunc(*middleware))
2013-08-08T03:27:45.673358+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/wsgi.py", line 54, in runwsgi
2013-08-08T03:27:45.673358+00:00 app[web.1]:     return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))
2013-08-08T03:27:45.673358+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/web/net.py", line 76, in validip
2013-08-08T03:27:45.673358+00:00 app[web.1]:     port = int(port)
2013-08-08T03:27:45.673552+00:00 app[web.1]: ValueError: invalid literal for int() with base 10: '/usr/local/bin:/usr/bin:/bin'
2013-08-08T03:27:46.866238+00:00 heroku[web.1]: Process exited with status 1
2013-08-08T03:27:46.881655+00:00 heroku[web.1]: State changed from starting to crashed

然而,当我尝试第二种方法时,我收到此错误:

Traceback (most recent call last):
  File "code.py", line 55, in <module>
    app.run(host='0.0.0.0', port=port)
TypeError: run() got an unexpected keyword argument 'host'

如何将我的应用程序启动并运行到heroku?

1 个答案:

答案 0 :(得分:1)

code.py首先需要一个整数参数,而不是$ PATH。它可能是一个预期的端口,因此$PATH传递Procfile而不是$PORT

更好:更改代码以使用ENV["PORT"],如果没有定义(在本地开发环境中可能就是这种情况),那么默认值(例如,你的dev env为8000或8080)。

在Heroku上,您的服务器需要监听的端口不是固定的 - 它会随着每个dyno的每次重启而改变。 Heroku将设置环境变量PORT以让您知道要侦听的端口。