2015-12-29 30 views
-1

我有一個Flask應用程序,用Cloud9 IDE編寫。我在本地運行它:終端中的「python manage.py runserver」。 這然後觸發:Python,Flask:Heroku無法打開(並運行)應用程序

manager.add_command('runserver', Server(
    use_debugger = True, 
    use_reloader = True, 
    host = os.getenv('IP', '0.0.0.0'), 
    port = int(os.getenv('PORT', 5000)) 
    ) 
) 

這段代碼位於manage.py文件。

現在我想用Heroku運行它。我完全按照他們的教程。我只是不知道我的Procfile應該是什麼。我寫的,像這樣:

web: gunicorn manage:runserver 

推混帳等一切似乎很好地工作。 當我鍵入: 「Heroku的PS:衡量Web = 1」,我在終端得到這樣的:

Scaling dynos... done, now running web at 1:Free. 

當我鍵入 「Heroku的開放」,我得到這個錯誤:

Opening fierce-spire-3069... xprop: unable to open display '' 
xprop: unable to open display '' 
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: links2: not found 
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: links: not found 
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: lynx: not found 
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: w3m: not found 
xdg-open: no method available for opening 'https://fierce-spire-3069.herokuapp.com/' 
done 

所以,我的應用程序無法打開。 當我用Heroku網站打開它時,出現一條錯誤消息。這是我在原木中發現的:

2015-12-29T20:15:06.399443+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=fierce-spire-3069.herokuapp.com request_id=c5d76e45-5d56-45f4-a2bc-75bd7fc08b7f fwd="81.82.128.183" dyno= connect= service= status=503 bytes= 

我在做什麼錯?

編輯

我改變了我的個人資料如下:

web: python manage.py runserver "0.0.0.0:5000" 

在Heroku的日誌中的上述錯誤消息已不存在,但有一個新問題:

2015-12-29T21:30:37.938957+00:00 app[web.1]:  from tsb import app 
2015-12-29T21:30:37.938955+00:00 app[web.1]: File "manage.py", line 7, in <module> 
2015-12-29T21:30:37.939002+00:00 app[web.1]: ImportError: No module named tsb 

這是指manage.py代碼的這一部分:

from tsb import app 

「tsb」是存儲我所有項目文件的文件夾,它是項目文件夾。爲什麼不能導入?

+0

不要在生產中使用內置的開發服務器,尤其是啓用了調試器的情況下。 – davidism

+0

你是什麼意思?我不知道該怎麼做ImortError。 – Vincent

+0

我的意思是不要在生產中使用它,它既不安全也不高效。我沒有評論導入錯誤。 – davidism

回答

2

您沒有正確使用gunicorn。該basic usage

$ gunicorn [OPTIONS] APP_MODULE 

這是你需要在Procfile使用什麼。

web: gunicorn [OPTIONS] APP_MODULE 

我不能告訴你使用什麼選項。你可以在Heroku's gunicorn documentation中找到。這裏重要的是APP_MODULE

它看起來像你的應用程序實例正在通過manage.py暴露,所以你想使用

web: gunicorn manage 

如果你試試這個,但是,它可能會失敗。默認情況下,gunicorn將在APP_MODULE內尋找名爲application的東西。您的應用程序似乎被命名爲manager。這意味着您需要

web: gunicorn manage:manager 
+0

我想我沒有使用gunicorn解決它,但現在我有一個新的錯誤..我編輯了我原來的問題。 – Vincent

+0

gunicorn不是你的問題。另外,你不應該在生產中使用開發服務器。 – dirn