【问题标题】:uploading web.py app on Heroku在 Heroku 上上传 web.py 应用程序
【发布时间】:2013-08-08 03:38:54
【问题描述】:

刚开始使用 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 上启动并运行?

【问题讨论】:

  • code.py 首先需要一个整数参数,而不是你的 $PATH。更改您的Procfile。我不知道为什么你甚至想要将 $PATH 传递给你的代码。
  • 对不起,我不知道要改成什么,因为当我把 8080 和上传它时,它也给了我错误:(
  • 你能不能:(1)粘贴你的web.py(2)改成$PORT,如果没有就粘贴错误。
  • 是的!将其更改为$PORT 有效。非常感谢:)
  • @NitzanShaked 嘿,干得好 :) 你应该发表你的评论作为答案,这样你才能被点赞和接受 :)

标签: heroku web.py


【解决方案1】:

code.py 首先需要一个整数参数,而不是你的 $PATH。它可能是它所期望的端口,因此您的 Procfile 中的 $PATH 不是 $PORT,而是通过 $PORT

更好的是:将您的代码更改为使用 ENV["PORT"],如果未定义(本地开发环境中可能就是这种情况),则使用默认值(例如,您的开发环境为 8000 或 8080)。

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

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 2015-04-05
    • 2015-10-21
    • 2015-05-10
    • 2022-07-02
    • 1970-01-01
    • 2018-10-04
    • 2017-11-18
    相关资源
    最近更新 更多