Estoy empezando con el apio en un proyecto de Django, y estoy algo atrapado en este problema en particular: básicamente, necesito distribuir una tarea de larga duración a diferentes trabajadores. La tarea se divide en varios pasos, cada uno de los cuales toma un tiempo considerable para completarse. Por lo tanto, si algún paso falla, me gustaría que el apio vuelva a intentar esta tarea utilizando el mismo trabajador para reutilizar los resultados de los pasos completados. Entiendo que el apio utiliza el enrutamiento para distribuir tareas a cierto servidor, pero no puedo encontrar nada sobre este problema en particular. Yo uso RabbitMQ como mi agente.¿Cómo hacer el intento de apio utilizando el mismo trabajador?
6
A
Respuesta
11
Usted podría tener todos los casos celeryd consumen de una cola llamada así por el nombre de host del trabajador:
celeryd -l info -n worker1.example.com -Q celery,worker1.example.com
establece el nombre de host a worker1.example.com
y consumirá de una cola con el mismo nombre, así como la cola predeterminada (llamado celery
).
A continuación, para dirigir una tarea a un determinado trabajador puede utilizar:
task.apply_async(args, kwargs, queue="worker1.example.com")
similary para dirigir un reintento:
task.retry(queue="worker1.example.com")
o para dirigir el reintento para el mismo trabajador:
task.retry(queue=task.request.hostname)
Cuestiones relacionadas
- 1. ejecutar un trabajador de apio en el fondo
- 2. Django-apio: Pasando solicitud Objeto al trabajador
- 3. ¿Cómo hacer la comunicación de trabajador a trabajador?
- 4. Notificar la tarea de apio del cierre del trabajador
- 5. Multiple OnClick on Widget para el mismo Intento
- 6. ¿Hay alguna manera de hacer persistente el apio/RabbitMQ?
- 7. Apio - minimiza el consumo de memoria
- 8. ¿Cómo obtener el remitente de un intento?
- 9. Cómo volver desde el intento de llamada
- 10. Cómo poner una lista en el intento
- 11. Android - Cómo ejecutar el intento desde JavaScript
- 12. Variable global en el trabajador web
- 13. Problemas con el daemon de apio
- 14. Problemas para detener el apio
- 15. Django Señales en el apio
- 16. Apio: ¿un mensaje en RabbitMQ puede ser consumido por dos o más trabajadores al mismo tiempo?
- 17. ¿Cómo hacer que múltiples vistas tengan el mismo ancho?
- 18. Cómo hacer layout_height y layout_width con el mismo tamaño
- 19. Cómo hacer el mismo diseño para todas las páginas web
- 20. Apio con Django - despliegue
- 21. trabajador apio no vuelve a intentar la tarea después de llamar reintento()
- 22. ¿Por qué el apio no se cierra limpiamente?
- 23. Redbean, Multiple many-to-many utilizando el mismo objeto
- 24. apio. Disminuir el número de procesos
- 25. Trabajador web en ejecución máxima html5 al mismo
- 26. ¿Cómo creo un trabajador resque automáticamente en el arranque?
- 27. instrucción using para el fondo trabajador
- 28. Android getIntent() devuelve el primer intento
- 29. R/quantmod: múltiples gráficos, todos utilizando el mismo eje y
- 30. ¿Ver imagen en el intento de ACTION_VIEW?
¡Muchas gracias por la respuesta! Creo que esto es exactamente lo que estoy buscando. No me di cuenta de que podemos pasar el nombre de la cola para reintentar(), pero ahora tiene mucho sentido :) – dangmai
'celeryd' ahora está en desuso, use' apio trabajador'. – user
Utilice '% computername%' en windows y '\' hostname \ '' en linux para compilar la línea de comandos. – ubershmekel