2017-01-24 17 views
0

デモ用のjupyterノートブック内の小さなフラスコサーバーをデバッグしたい。Jupyter Notebook内のFlaskサーバーのデバッグ

私は、最新のUbuntuとPython2(このエラーが発生したPython3のMacでも)でvirtualenvを作成しました。pip install flask jupyter。

しかし、helloworldスクリプトでセルを作成すると、ノートブックの中で実行されません。

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run(debug=True,port=1234) 

File "/home/***/test/local/lib/python2.7/site-packages/ipykernel/kernelapp.py", line 177, in _bind_socket s.bind("tcp://%s:%i" % (self.ip, port)) File "zmq/backend/cython/socket.pyx", line 495, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5653) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:10014) raise ZMQError(errno) ZMQError: Address already in use

NB - 私はそれが失敗するたびに後にポート番号を変更します。

もちろん、スタンドアロンスクリプトとして実行されます。

更新なし(debug = True)いいです。

+0

私はあなたの問題を再現できません。この正確なコードをJupyterセルで実行すると、devサーバーが期待どおりに実行されます。 [編集]に[mcve]を含めるようにしてください。 – davidism

+0

@davidism Jupyterでポートを複数回開くことができますか? – chro

+0

私はmkdirテスト以外の何かを見逃しました。 CDテスト; virtualenv。 ;ソースbin/activate;ピップフラスコのジュピターをインストールしますか?私はそれが明らかだと思った – chro

答えて

-2

flask.FlaskオブジェクトはサーバではなくWSGIです。メモリはflaskを提供している場合WSGIサーバとしてwerkzeugを使用して、あなたのシェルで

python -m flask run 

を呼び出すときに、それは新しいWSGIサーバーを作成し、from werkzeug.serving.run_simpleにparemeterとしてごflask.Flaskを渡します。あなたはこれを試すことができるかもしれないと言った:

from werkzeug.wrappers import Request, Response 
from flask import Flask 

app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == '__main__': 
    from werkzeug.serving import run_simple 
    run_simple('localhost', 9000, app) 
+1

これはいくつかの設定チェックを除いて、 'app.run()'の呼び出しと全く同じです。 – davidism

+0

うわー、それは助けて! run_simpleは動作しています – chro

+0

@davidismは正しいですが、私は 'jupyter'と' Flask'をインストールしました。元のコードは魅力的に機能します。これは 'flask.Flask#run'が' run_simple'を呼び出すことを示しています – yorodm

関連する問題