刚开始使用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?
答案 0 :(得分:1)
code.py
首先需要一个整数参数,而不是$ PATH。它可能是一个预期的端口,因此$PATH
传递Procfile
而不是$PORT
。
更好:更改代码以使用ENV["PORT"]
,如果没有定义(在本地开发环境中可能就是这种情况),那么默认值(例如,你的dev env为8000或8080)。
在Heroku上,您的服务器需要监听的端口不是固定的 - 它会随着每个dyno的每次重启而改变。 Heroku将设置环境变量PORT
以让您知道要侦听的端口。