ver tareas programadas manualmente instalar ejecutar python django celery django-celery

python - manualmente - ¿Por qué sería preferible ejecutar tareas programadas con Apio sobre crontab?



install crontab python 3 (2)

El apio se indica siempre que necesite coordinar trabajos en varias máquinas, garantizar que los trabajos se ejecuten incluso cuando se agregan o eliminan máquinas de un grupo de trabajo, tener la capacidad de establecer tiempos de vencimiento para trabajos, definir trabajos de varios pasos con estilo gráfico en lugar de lineal flujo de dependencia, o tener un repositorio único de lógica de programación que opera de la misma manera en múltiples sistemas operativos y versiones.

Teniendo en cuenta que el apio ya es parte de la pila para ejecutar colas de tareas (es decir, no se agrega solo para ejecutar crones, eso parece una exageración en mi humilde opinión).

¿Cómo puede su función de "tareas periódicas" ser beneficiosa como un reemplazo para crontab? Específicamente buscando los siguientes puntos.

  • Principales pros / contra sobre crontab
  • Use casos donde el apio es una mejor opción que crontab
  • Caso de uso específico de Django: Apio vs crontab para ejecutar tareas periódicas basadas en django, cuando el apio se ha incluido en la pila como django-celery para realizar tareas de django.

He estado usando cron para un sitio web de producción, y he cambiado a apio en un proyecto actual. Estoy mucho más apio que cron, aquí está el por qué:

  • Celery + Celerybeat tiene una granularidad más fina que cron. Cron no puede correr más de una vez por minuto, mientras que el apio puede (tengo una tarea cada 90 segundos que verifica una cola de correo electrónico para enviar mensajes, y otra que limpia la lista de usuarios en línea).
  • Una línea cron debe invocar un script o un comando único, con ruta absoluta e información de usuario. Apio llama a las funciones de Python, no es necesario escribir más que el código.
  • Con el apio, para implementarlo en otra máquina, generalmente solo tiene que extraer / copiar su código, que generalmente está en un solo lugar. Desplegar con cron necesitaría más trabajo (puede automatizarlo pero ...)
  • Realmente encuentro que el apio es más apropiado que el cron para la limpieza rutinaria (caché, base de datos) y, en general, para tareas cortas. Sin embargo, volcar una base de datos es más un trabajo para cron, porque no quieres saturar la cola de eventos con tareas demasiado largas.
  • No menos importante, el apio se distribuye fácilmente entre las máquinas.