Articles of Gunicorn

Gunicorn tala de múltiples trabajadores

Tengo una aplicación de flask que se ejecuta en varios procesos de sincronización de gunicorn en un servidor y utiliza TimedRotatingFileHandler para iniciar sesión en un archivo desde la aplicación de flask en cada trabajador. En retrospectiva, esto parece inseguro. ¿Existe una forma estándar de lograr esto en Python (a alto volumen) sin escribir mi […]

Conexión Gunicorn en uso: (‘0.0.0.0’, 5000)

Instalé redis esta tarde y causé algunos errores, así que lo desinstalé, pero este error persiste cuando inicio la aplicación con foreman start . ¿Alguna idea sobre una solución? foreman start 22:46:26 web.1 | started with pid 1727 22:46:26 web.1 | 2013-05-25 22:46:26 [1727] [INFO] Starting gunicorn 0.17.4 22:46:26 web.1 | 2013-05-25 22:46:26 [1727] [ERROR] […]

¿Cómo hacer que el matraz responda al cliente de forma asíncrona?

Flask es un servidor web de un solo hilo. Pero quiero hacer que no se bloquee cuando se maneja una solicitud que consume mucho tiempo. Por ejemplo: from flask import Flask import time import sys app = Flask(__name__) @app.route(“/”) def hello(): print “request” sys.stdout.flush() for _ in range(10000000): for j in range(10000000): i = 1 […]

Compartir datos globales estáticos entre procesos en una aplicación Gunicorn / Flask

Tengo una aplicación Flask ejecutándose bajo Gunicorn, usando el tipo de trabajador de sincronización con 20 procesos de trabajo. La aplicación lee muchos datos en el inicio, lo que lleva tiempo y usa la memoria. Peor aún, cada proceso carga su propia copia, lo que hace que se demore más y tome 20 veces la […]

¿Cómo funciona django con virtualenv?

Entiendo cómo crear un virtualenv, activar ese virtualenv, y luego instalar django mientras el virtualenv está activado. Ex: virtualenv ~/narnia source ~/narnia/bin/activate pip install django Por lo que entiendo, cuando “activa” un entorno virtual, solo cambia algunas variables de ruta mientras está en un shell, nada más. Entonces, cuando django se instala con pip mientras […]

Sirviendo la API REST de Python (matraz) sobre HTTP2

Tengo un servicio REST de Python y quiero servirlo utilizando HTTP2. Mi configuración de servidor actual es nginx -> Gunicorn . En otras palabras, nginx (puerto 443 y 80 que redirige al puerto 443) se ejecuta como un proxy inverso y reenvía las solicitudes a Gunicorn (puerto 8000, sin SSL). nginx se ejecuta en modo […]

¿Cómo puedo ejecutar tareas largas en Google App Engine, que usa gunicorn?

GAE flex usa gunicorn como punto de entrada de forma predeterminada, lo cual está bien, excepto que tengo una función que tarda mucho tiempo en procesar (raspando sitios web y datos de historias en una base de datos) y gunicorn agota el tiempo de espera de 30 segundos por defecto, luego un nuevo trabajador comienza […]

¿Compartiendo memoria en Gunicorn?

Tengo una gran estructura de datos de solo lectura (un gráfico cargado en networkx, aunque esto no debería ser importante) que uso en mi servicio web. El servicio web se construye en Flask y luego se sirve a través de Gunicorn. Resulta que por cada trabajador gunicornio que gire, el que funciona tiene su propia […]

Gunicorn no recarga una aplicación Django

Tengo un comportamiento de recarga de código inconsistente, con una aplicación Django 1.3 y gunicorn 0.12.1, ejecutándose dentro de un virtualenv. Gunicorn no vuelve a cargar mi aplicación correctamente, incluso con un reinicio del PID del proceso de gunicorn específico. Cuando ejecuto un runserver ejecución básico (a través de Django, a través del comando manage.py […]

¿Por qué la aplicación Flask no crea ningún registro cuando está alojado en Gunicorn?

Estoy intentando agregar el registro a una aplicación web que usa Flask. Cuando se aloja utilizando el servidor incorporado (es decir, python3 server.py ), el registro funciona. Cuando se aloja con Gunicorn, el archivo de registro no se crea. El código más simple que reproduce el problema es este: #!/usr/bin/env python import logging from flask […]