Celery: No se pueden ejecutar tareas en Windows

Creado en 8 jun. 2017  ·  13Comentarios  ·  Fuente: celery/celery

Se inicia apio 4.x (con correcciones # 4078) pero todas las tareas fallan

pasos para reproducir

Utilice el tutorial Primeros pasos (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html)

apio -Un trabajador de tareas --loglevel = info
add.delay (2,2)

Comportamiento esperado

La tarea se ejecuta y se produce un resultado de 4

Comportamiento real

El apio se estrella.

"C: \ Archivos de programa \ Python36 \ Scripts \ celery.exe" -A perse.celery worker -l info

-------------- apio @ PETRUS v4.0.2 (llamada latente)


--- * * * - Windows-10-10.0.14393-SP0 2017-06-08 15:31:22


  • ** ---------- [config]
  • ** ----------.> aplicación: perse: 0x24eecc088d0
  • * ----------.> transporte: amqp: // invitado : * @ localhost: 5672 //
  • ** ----------.> resultados: rpc: //
  • * --- * ---.> concurrencia: 12 (prefork)- * ** ----.> eventos de tareas: OFF (habilite -E para monitorear tareas en este trabajador)

-------------- [colas]
.> intercambio de apio = apio (directo) clave = apio

[Tareas]
. perse.tasks.celery_add

[2017-06-08 15: 31: 22,685: INFO / MainProcess] Conectado a amqp: // invitado : *@127.0.0.1: 5672 //[2017-06-08 15: 31: 22,703: INFO / MainProcess] mingle: buscando vecinos[2017-06-08 15: 31: 23,202: INFO / SpawnPoolWorker-5] proceso hijo 5124 llamando a self.run ()[2017-06-08 15: 31: 23,207: INFO / SpawnPoolWorker-4] proceso hijo 10848 llamando a self.run ()[2017-06-08 15: 31: 23,208: INFO / SpawnPoolWorker-10] proceso secundario 5296 llamando a self.run ()[2017-06-08 15: 31: 23,214: INFO / SpawnPoolWorker-1] proceso secundario 5752 llamando a self.run ()[2017-06-08 15: 31: 23,218: INFO / SpawnPoolWorker-3] proceso hijo 11868 llamando a self.run ()[2017-06-08 15: 31: 23,226: INFO / SpawnPoolWorker-11] proceso hijo 9544 llamando a self.run ()[2017-06-08 15: 31: 23,227: INFO / SpawnPoolWorker-6] proceso hijo 16332 llamando a self.run ()[2017-06-08 15: 31: 23,229: INFO / SpawnPoolWorker-8] proceso hijo 3384 llamando a self.run ()[2017-06-08 15: 31: 23,234: INFO / SpawnPoolWorker-12] proceso secundario 8020 llamando a self.run ()[2017-06-08 15: 31: 23,241: INFO / SpawnPoolWorker-9] proceso hijo 15612 llamando a self.run ()[2017-06-08 15: 31: 23,243: INFO / SpawnPoolWorker-7] proceso secundario 9896 llamando a self.run ()[2017-06-08 15: 31: 23,245: INFO / SpawnPoolWorker-2] proceso hijo 260 llamando a self.run ()[2017-06-08 15: 31: 23,730: INFO / MainProcess] mezclarse: solo[2017-06-08 15: 31: 23,747: INFO / MainProcess] apio @ PETRUS listo.[2017-06-08 15: 31: 49,412: INFO / MainProcess] Tarea recibida: perse.tasks.celery_add [524d788e-e024-493d-9ed9-4b009315fea3][2017-06-08 15: 31: 49,416: ERROR / MainProcess] El controlador de tareas generó un error: ValueError ('no hay suficientes valores para descomprimir (esperado 3, obtuvo 0)',)Rastreo (llamadas recientes más última):Archivo "c: \ archivos de programa \ python36 \ lib \ site-packages \ billiard \ pool.py", línea 359, en workloopresultado = (Verdadero, prepare_result (divertido ( argumentos, ** kwargs)))
Archivo "c: \ archivos de programa \ python36 \ lib \ site-packages \ celery \ app \ trace.py", línea 518, en _fast_trace_task
tareas, aceptar, nombre de host = _loc
ValueError: no hay suficientes valores para descomprimir (esperado 3, obtuvo 0)

Reparar

Ver solicitud de extracción n. ° 4078

Documentation Windows Not a Bug

Comentario más útil

Tengo que confirmar: este error aparece en

Celery 4.1.0
Windows 10 Enterprise 64 bit

al ejecutar el comando celery -A <mymodule> worker -l info

y la siguiente solución alternativa funciona:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

Todos 13 comentarios

FWIW He solucionado este problema utilizando la implementación del grupo de eventos (opción de línea de comandos "-P eventlet").

La solución de @drewdogg debe mencionarse en el tutorial.

Tengo que confirmar: este error aparece en

Celery 4.1.0
Windows 10 Enterprise 64 bit

al ejecutar el comando celery -A <mymodule> worker -l info

y la siguiente solución alternativa funciona:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

es suficiente definir FORKED_BY_MULTIPROCESSING = 1 variable de entorno para la instancia del trabajador.

@auvipy Trabaja para mí, gracias.

@auvipy realmente resuelve el problema :) 👍
agregar:
importar sistema operativo
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir la instancia de Apio es suficiente

tal vez esto debería mencionarse en los documentos? @wonderfulsuccess ¿te importa enviar una solicitud de extracción?

@wonderfulsuccess

Muchas gracias

@auvipy realmente resuelve el problema
agregar:
importar sistema operativo
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir la instancia de Apio es suficiente

¡Gracias está trabajado!

@auvipy si esto es solo una línea de código para corregir, entonces ¿por qué no arreglarlo dentro de apio, en lugar de usar los documentos para recomendar a los usuarios que implementen una solución alternativa? ¿Por qué un error que rompe completamente la plataforma con una solución tan simple sigue siendo un problema después de casi 2 años?

¿Dónde quieres que el apio ponga esto? Creo que esto es adecuado para instrucciones específicas de Windows. si desea arreglarlo en el nivel de código, venga con un PR apropiado.

@auvipy realmente resuelve el problema :) 👍
agregar:
importar sistema operativo
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
antes de definir la instancia de Apio es suficiente

¡Eres increíble, muchas gracias!

@auvipy He estado buscando una respuesta a este problema, he pasado mucho tiempo intentando solucionarlo, muchas gracias.

¿Fue útil esta página
0 / 5 - 0 calificaciones