当前位置:  开发笔记 > 编程语言 > 正文

在Jupyter Notebook中调试Flask服务器

如何解决《在JupyterNotebook中调试Flask服务器》经验,为你挑选了1个好方法。

我想调试jupyter笔记本内的小型烧瓶服务器进行演示.

我在最新的Ubuntu和Python2上创建了virtualenv(在Mac上用Python3也发生了这个错误),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)

在_bind_socket s.bind中输入文件"/home/***/test/local/lib/python2.7/site-packages/ipykernel/kernelapp.py",第177行("tcp://%s:%i" %(self.ip,port))文件"zmq/backend/cython/socket.pyx",第495行,位于zmq.backend.cython.socket.Socket.bind(zmq/backend/cython/socket.c:5653)文件"zmq/backend/cython/checkrc.pxd",第25行,在zmq.backend.cython.checkrc._check_rc(zmq/backend/cython/socket.c:10014)中引发ZMQError(错误号)ZMQError:地址已在使用中

注意 - 每次失败后我都会更改端口号.

当然,它作为一个独立的脚本运行.

更新没有(debug = True)没关系.



1> yorodm..:

我安装了Jupyter和Flask,你的原始代码也可以使用.


flask.Flask对象是WSGI应用程序,而不是服务器.WSGI当你python -m flask run在shell中调用时,Flask使用Werkzeug的开发服务器作为服务器.它创建一个新的WSGI服务器,然后将您的应用程序作为paremeter传递给werkzeug.serving.run_simple.也许您可以尝试手动执行此操作:

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)

Flask.run()run_simple()内部调用,所以这里应该没有区别.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有