2

web.py と heroku を使い始めたばかりなので...

Heroku にアップロードしたいこのシンプルなアプリがあり、http://joshuaoiknine.com/post/47196802362/publishing-for-the-web-py-python-framework-to-heroku の指示に従いました

これは私のプロファイルです:

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

ただし、2 番目の方法を試したところ、次のエラーが表示されました。

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で起動して実行する方法はありますか?

4

1 に答える 1

1

code.py$PATH ではなく、最初に整数の引数が必要です。それはおそらくそれが期待しているポートであるため$PATHProcfileパスの代わりに$PORT.

さらに良いことに、コードを使用するように変更し、ENV["PORT"]それが定義されていない場合 (ローカルの開発環境の場合のように)、デフォルト (開発環境の 8000 または 8080 など) を使用します。

Heroku では、サーバーがリッスンする必要があるポートは固定されていません。すべての dyno を再起動するたびに変更されます。Heroku は環境変数を設定して、PORTリッスンするポートを知らせます。

于 2013-08-11T06:39:53.250 に答える