gpt4 book ai didi

python - 如何使用 `gevent.pywsgi.WSGIServer` 和 `WebSocketHandler` 启用 Flask 应用程序的日志记录?

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:22 24 4
gpt4 key购买 nike

通过以下两个最小示例应该可以重现该问题:

使用 app.run() 的最小示例

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello'

app.run()
<小时/>

使用 gevent.pywsgi.WSGIServer 的最小示例

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello'

from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
server = pywsgi.WSGIServer(('127.0.0.1', 5000), app, handler_class=WebSocketHandler)
server.serve_forever()
<小时/>

前 5 行是相同的,因此两个示例仅在启动服务器的方式上有所不同。两台服务器都工作,我在浏览器中收到“Hello”。第一个示例打印:

 * Serving Flask app "1" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [20/Jun/2019 23:43:15] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Jun/2019 23:43:19] "GET / HTTP/1.1" 200 -

因此控制台输出显示有关服务器处理的每个请求的一些信息。

但是,对于第二个示例,我在控制台中不再获得任何日志输出。如何为 gevent.pywsgi.WSGIServerWebSocketHandler 启用日志记录?

<小时/>

背景(我认为这与问题无关)

我正在运行一个使用 flask_sockets 的 Flask 应用。因为

Werkzeug development server cannot provide the WSGI environ with a websocket interface

我无法通过 app.run() 使用服务器,而是使用 gevent.pywsgi.WSGIServer。我上面示例的代码直接取自模块的示例 https://github.com/heroku-python/flask-sockets无需任何修改。

最佳答案

日志记录与 gevent.pywsgi.WSGIServer 的工作方式不同。它使用 python logging并且更加复杂和灵活。

这是一个例子:

from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler

import logging
logging.basicConfig(level=logging.INFO)

server = pywsgi.WSGIServer(('127.0.0.1', 5000), app, handler_class=WebSocketHandler)
server.serve_forever()

现在无论您想要输出,您都可以执行以下操作:

logging.info("You can see me now...")   

如果您想查看 WSGIServer 的启动信息,请将日志级别设置为 DEBUG,您可以看到大量输出。

关于python - 如何使用 `gevent.pywsgi.WSGIServer` 和 `WebSocketHandler` 启用 Flask 应用程序的日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com