2

我有一个烧瓶 + Gevent-socketio 迷你网站。推出:

app = Flask(__name__)
app.debug = True

@werkzeug.serving.run_with_reloader
def runServer():
    print 'Listening on %s...' % WEB_PORT
    ws = SocketIOServer(('0.0.0.0', WEB_PORT),
        SharedDataMiddleware(app, {}),
        resource="socket.io",
        policy_server=False)

    ws.serve_forever()

但是,当我的视图中发生错误时,它会输出

<pre style="word-wrap: break-word; white-space: pre-wrap;">Internal Server Error</pre>

而不是显示 werkzeug 调试器。另外,我的习惯@app.errorhandler(500)没有被调用。

这发生在使用 Gevent-socketio 时,常规烧瓶网站工作正常。

我想知道是什么在处理错误并取消默认烧瓶行为......

4

2 回答 2

2

我最近解决了这个问题,可以修改 Werkzeug 调试器以使用 socket.io 命名空间(并且自动重新加载也可以工作),请参见此处并享受:

https://github.com/aldanor/SocketIO-Flask-Debug

于 2013-09-29T14:54:45.907 回答
1

要查看 werkzeug 调试器,您必须使用标准中间件堆栈为默认服务器提供所有 http 请求。

但是您为服务 websockets 请求启动了单独的 SocketIOServer。

烧瓶和 gevent_socketio 使用示例

于 2012-12-20T09:42:36.710 回答