1. 程式人生 > >Flask 應用程式外部可見問題: typeerror run() got an unexpected keyword argument 'host'.

Flask 應用程式外部可見問題: typeerror run() got an unexpected keyword argument 'host'.

今天在Windows 7 下通過NAT的埠轉發機制訪問VirtualBox中的 CentOS 6.4上的Flask 網站。雖然在CentOS上能夠訪問,但Win7下總是無法訪問。應該不是防火牆的問題。

如果你執行伺服器,你會注意到它只能從你自己的計算機上訪問,網路中其它任何的地方都不能訪問。這是因為預設情況下,除錯模式,應用中的一個使用者可以執行你計算機上的任意Python程式碼。

如果你禁用了debug或信任你所在網路的使用者,你可以簡單修改呼叫run()的方法使你的伺服器公開可用,如下:
app.run(host='0.0.0.0')這讓你的作業系統去監聽所有公開的IP。

然後興致沖沖地添加了host='0.0.0.0',報錯

typeerror run() got an unexpected keyword argument 'host'.
類似地,如果是新增debug=True,會報錯
typeerror run() got an unexpected keyword argument 'debug'.

後來,Google了一下之後,原來使用下面程式碼Manager來管理app

from flask.ext.script import Manage


app = create_app()
manager = Manager(app)

改為 from flask.ext.script import Manage, Server


在manager = Manager(app)下面新增

manager.add_command("runserver", Server(
    host = '0.0.0.0')
)
然後啟用virtualenv,執行./manage.py runserver。在Windows 7瀏覽器中輸入127.0.0.1: port,這裡的port是你在VirtualBox中埠轉發設定的本地埠,最後訪問成功!!