2

私はフラスコ+Gevent-socketiominiのウェブサイトを持っています。起動されます:

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を使用したときに発生し、通常のフラスコのWebサイトは正常に機能します。

何がエラーを処理し、デフォルトのフラスコの動作をキャンセルしているのだろうか...

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 に答える