/ / ¿Cómo calcular el porcentaje de tareas fallidas en Google AppEngine? - google-app-engine, cola de tareas

¿Cómo calcular el porcentaje de tareas fallidas en Google AppEngine? - google-app-engine, cola de tareas

estoy usando empujar cola de tareas de GAE (python). Hay veces en que después de X minutos, el Y% de las tareas ha fallado. Para esta situación, quiero purgar la cola de tareas (no hay necesidad de ejecutarlas, eventualmente muchos fallarán).

Puedo configurar una tarea para que deje de ejecutarse si se reintenta más de 2 veces, pero si tengo 100 tareas que fallaron (300 ejecuciones = 100 + 200 reintentos) ¿cómo puedo detener las tareas restantes para ejecutar?

queue.yaml

queue:
- name: my-queue
mode: push
rate: 1/s
bucket_size: 10
max_concurrent_requests: 10
retry_parameters:
task_retry_limit: 2

Respuestas

1 para la respuesta № 1

Me gustaría almacenar algunos valores en memcache, como number of tasks in queue y timestamps of tasks that failed.

Cada tarea necesitaría realizar estas tareas:

  • en el inicio, calcule el porcentaje de rotación (en los últimos X minutos) y salga si el porcentaje es demasiado alto, o incremente el number of tasks contrarrestar y proceder.
  • en el fracaso, decrementar number of tasks contador y añadir una marca de tiempo a la failed tasks lista.
  • en el éxito, decrementar el number of tasks mostrador.

Para calcular el porcentaje de rodadura, tome la lista completa de failed tasks y filtre las marcas de tiempo que son demasiado antiguas (hace más de X minutos). Ponga la nueva lista de nuevo en memcache. Entonces, toma el number of tasks contrarrestar y calcular 100.0 * (number of failed tasks) / (number of tasks) para obtener su porcentaje. Si excede el umbral de Y%, salga de su tarea inmediatamente.