2012-12-02 79 views
2

我有一個Flask應用程序,我試圖通過Gunicorn運行。Gunicorn顯示404代替應用程序

該應用程序所在的模塊中,可以說其名爲「MyModule的」,而__init__.py文件位於mymodule/看起來是這樣的:

from flask import Flask 
app = Flask(__name__) 

if __name__ == '__main__': 
    app.run() 

不過,無論該URL,則返回404錯誤。

我已經試過包含MyModule的文件夾中的文件夾中運行Gunicorn:

gunicorn -b 127.0.0.1:5000 mymodule:app 

我試圖在我的根調試文件,「runapp.py」指點Gunicorn,通過運行gunicorn -b 127.0.0.1:5000 runapp.py,但結果爲error: [Errno 48] Address already in use

我在做什麼錯?

編輯:文件結構

/runapp.py 
/mymodule/__init__.py 
/mymodule/views.py 

runapp.py:

from mymodule import app, views 
app.run(debug=True) 

__init.py__

from flask import Flask 
from mymodule import views 

app = Flask(__name__) 

if __name__ == '__main__': 
    app.run() 

views.py

from mymodule import api 
from mymodule.forms import SettingsForm 
from functools import wraps 
from flask import request, Response, render_template, redirect, url_for 

[...] 

@app.route('/') 
@requires_auth 
def dashboard(): 
    data = api.get_overview() 
    return render_template('dashboard.html', data=data) 
+0

您的應用程序不處理任何路徑。你不應該至少處理路徑「/」? –

+0

該代碼位於應用程序的另一部分 - 有一條路徑可以處理/ - 如果我只是在沒有Gunicorn的情況下運行「python runapp.py」,它就可以正常工作。 – phidah

+0

但是你使用'gunicorn mymodule:app',所以'app'被使用,而不是'runapp'。 –

回答

3

你得到Errno 48因爲相同的端口(5000)已經忙於爲其他應用程序,這意味着你運行你的應用程序兩次,大概。

404問題是由缺少路由引起的。路由沒有正確連接到app,因爲您沒有將它導入views模塊。從Flask documentation

Here’s an example __init__.py :

from flask import Flask 
app = Flask(__name__) 

import yourapplication.views 

And this is what views.py would look like:

from yourapplication import app 

@app.route('/') 
def index(): 
    return 'Hello World!' 

請注意,在__init__.py意見創建瓶實例後進口

+0

我不明白。我在我的mymodule文件夾中的views.py中定義了路由(也是「/」)。當我通過runapp.py運行應用程序時工作正常。 – phidah

+0

@phidah你沒有顯示你的路線的源代碼。你可以嗎? –

+0

完成 - 這是在原來的問題。 – phidah

相關問題