Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

536
Vistas
¿Cómo habilitar el registro de la aplicación Flask con `gevent.pywsgi.WSGIServer` y `WebSocketHandler`?

El problema debe ser reproducible con los siguientes dos ejemplos mínimos:

Ejemplo mínimo con app.run()

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

Ejemplo mínimo con 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()

Las primeras 5 líneas son idénticas, por lo que ambos ejemplos solo difieren en la forma en que inician el servidor. Ambos servidores funcionan, obtengo "Hola" en el navegador. El primer ejemplo imprime:

 * 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 -

Entonces, la salida de la consola muestra información sobre cada solicitud que maneja el servidor.

Sin embargo, con el segundo ejemplo, ya no obtengo ningún resultado de registro en la consola. ¿Cómo habilito el registro para gevent.pywsgi.WSGIServer y WebSocketHandler ?


Antecedentes (que no importa con respecto al problema, creo)

Estoy ejecutando una aplicación Flask que usa flask_sockets . Porque

El servidor de desarrollo Werkzeug no puede proporcionar al entorno WSGI una interfaz websocket

No puedo usar el servidor con app.run() y estoy usando gevent.pywsgi.WSGIServer en su lugar. El código de mi ejemplo anterior se toma directamente de los ejemplos del módulo en https://github.com/heroku-python/flask-sockets sin ninguna modificación.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Debería funcionar así, pero es un error en WebSocketHandler del módulo geventwebsocket que ya se informó: https://gitlab.com/noppo/gevent-websocket/issues/16

over 4 years ago · Santiago Trujillo Denunciar

0

El registro funciona de manera diferente con gevent.pywsgi.WSGIServer . Utiliza el registro de python y es mucho más sofisticado y flexible.

Aquí hay un ejemplo:

 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()

Y ahora donde quieras salida, puedes hacer:

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

Si desea ver la información de inicio de WSGIServer, establezca el nivel de registro en DEBUG y podrá ver toneladas de resultados.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda