【问题标题】:How make work werkzeug / custom error pages with flask + Gevent-socketio如何使用 flask + Gevent-socketio 制作 werkzeug / 自定义错误页面
【发布时间】:2012-12-07 12:19:31
【问题描述】:

我有一个烧瓶 + 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 时,普通的烧瓶网站可以正常工作。

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

【问题讨论】:

    标签: python exception-handling flask werkzeug gevent-socketio


    【解决方案1】:

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

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

    example for flask and gevent_socketio usage

    【讨论】:

    • 我这样做了,但被错误击中:KeyError:'socketio'。我认为与github.com/abourget/gevent-socketio/issues/63 有关,所以我回滚到几个socket.io 客户端,但不起作用。但是,如果我像以前一样离开它就可以了。所以使用这个解决方案会得到错误并且套接字 io 不起作用。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 2012-11-13
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 2020-02-28
      相关资源
      最近更新 更多