capataz es una cola simple distribuida diseñado para manejar un gran número de tareas de una sola vez.
Construimos esta en DISQUS manejar frecuentes, pero las tareas no comunes como "migrar estos datos a un nuevo esquema".
¿Por qué?
Usted puede preguntar, "¿Por qué no utilizar Apio?". Bueno, la respuesta es simplemente que hacer cola normal requiere (no literalmente, pero sería doloroso sin) que para amortiguar todas las tareas en una ubicación central. Esto se convierte en un problema cuando se tiene una gran cantidad de tareas, especialmente cuando contienen una gran cantidad de datos.
Imagina que tienes mil millones tareas, cada una con un peso de 5k. Eso es, sin comprimir, en un mínimo de 4 terabytes de almacenamiento necesarios sólo para mantener que la vuelta, y usted gana muy poco.
Capataz por otro lado está diseñado para tomar un iterador resumable, y sólo tire en un número máximo de puestos de trabajo a la vez (utilizando el estándar Python cola de). Esto asegura un patrón consistente de memoria que puede escalar linealmente.
Uso
Crear un iterador, y devolución de llamada:
toma de importación
# Debemos asegurarnos de tiempo de espera predeterminado ** no se ajusta ** o mierda al azar a golpear el ventilador.
socket.setdefaulttimeout (Ninguno)
# Capataz / example.py
get_jobs def (last = 0):
& Nbsp; # última sería enviado si se reanudó estado
& Nbsp; # desde una ejecución anterior
& Nbsp; para i en xrange (pasado, 100 millones):
& Nbsp; # empleos produjeron debe ser serializeable con salmuera
& Nbsp; rendimiento i
handle_job def (i):
& Nbsp; # este ** ** imprescindible ser idempotente, como la reanudación del proceso puede ejecutar un trabajo
& Nbsp; # que ya había sido ejecutado
& Nbsp; print "Got% r!" % Yo
Generar un maestro:
& Nbsp; taskmaster.example tm-master
Generar un esclavo:
& Nbsp; taskmaster.example tm-esclavo
O desovar 8 esclavos (cada una contiene un conjunto de subprocesos):
& Nbsp; taskmaster.example tm-spawn 8
No te gusta la función mágica para descubrir maestro / esclavo? Especifique sus propios objetivos:
& Nbsp; taskmaster.example tm-master: get_jobs $ tm-esclavo taskmaster.example: handle_job
Nota: Todos los argumentos son opcionales, y tendrán por defecto localhost sin ninguna clave de autenticación
Requisitos :.
- Python
Comentarios que no se encuentran