2012-05-10 84 views
4

我試圖在Heroku上設置一個測試Django項目。繼建議hereHeroku Getting Started我試圖使用gunicorn而不是Django dev服務器。在Heroku上爲Django配置gunicorn

這是我在Procfile第一次嘗試:

web: gunicorn_django --workers=4 --bind=0.0.0.0:$PORT my_project/settings.py 
worker: python my_project/manage.py celeryd -E -B --loglevel=INFO 

這給了我這個錯誤:

ImportError: Could not import settings 'settings.py' (Is it on sys.path?): No module named py 

我決定採取不同的軌道,並遵循建議here。現在我Procfile是這樣的:

(我也更新了我的要求的文件,包括GEVENT。)它給了我同樣的錯誤:

ImportError: Could not import settings 

最後,我只是將它設置爲settings

web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload settings 

但現在我得到這個錯誤:

Error: django project not found 

我的Django項目設置的方式是settings.py文件位於repo的父目錄中 - 我沒有在另一個目錄下的Django項目。它與virtualenv和git文件處於同一級別。這會是一個問題嗎?我確信我正在做一些簡單的錯誤 - 任何幫助都將非常感激。


如果我遵循的Heroku here指令,改變Procfile這樣:

web: gunicorn hellodjango.wsgi -b 0.0.0.0:$PORT 

什麼也沒有發生 - 在日誌中沒有錯誤,但沒有proceses運行和應用程序剛剛出現在死亡水。

+0

您是否看到過專門針對Django的Heroku Quick Start文章?它包括對gunicorn的詳細說明。 https://devcenter.heroku.com/articles/django –

+0

是的,我有,我會添加細節。簡短的回答 - 當我遵循這些方向時什麼都不會發生。該應用程序從未開始。 – tchaymore

+1

我有相同的問題,基本上經歷了所有這些步驟才找到這個。 – Kin

回答

13

我剛剛遇到同樣的問題。在你從Heroku的引導複製procfile,改變hellodjango.wsgiyourproject.wsgi

貌似大家都受害現在再盲目地複製粘貼,但在你(和我)的防禦,它看起來像有沒有* .wsgi這個文件實際上正在被打開,這就是你如何向gunicorn發出你希望它運行你的django項目的信號。

+11

你實際上是在指定Python模塊'yourproject/wsgi.py'。 –

0

您是否在根文件夾(包含單詞django)中有requirements.txt以及settings.py?這些似乎是Django應用程序檢測的要求,如記錄here

4

我有同樣的確切問題,你有。我能夠最終實現它的工作方式是使用django app gunicorn。

我加gunicorn到Django的settings.py

'gunicorn', 

然後我用這個作爲我Procfile我的網頁條目。

web: python manage.py run_gunicorn -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload 

您可能需要改變你.manage.py如果你使用一個不同的目錄結構,然後我做到了。我的應用程序在/ app中,我的Python路徑也是/ app。

2

我有這個問題,不得不直接指向python路徑,然後設置設置reference

最終我Procfile看起來是這樣的:

web: gunicorn_django --pythonpath=/app/project --settings=settings 

我不得不跑heroku run這表明了ENV變量,這就是我在哪裏能找到我預先考慮到我的項目名稱/app