/ / Jak obliczyć procent nieudanych zadań w Google AppEngine? - google-app-engine, kolejka zadań

Jak obliczyć procent nieudanych zadań w Google AppEngine? - google-app-engine, kolejka zadań

ja używam kolejka zadań push od GAE (python). Czasami po X minutach Y% zadań nie powiodło się. W tej sytuacji chcę wyczyścić kolejkę zadań (nie ma potrzeby ich wykonywania, w końcu wielu nie powiedzie się).

Mogę skonfigurować zadanie, aby przestało działać, jeśli ponowi próbę więcej niż 2 razy, ale jeśli mam 100 zadań, które się nie powiodły (300 przebiegów = 100 + 200 prób), jak mogę zatrzymać pozostałe zadania do wykonania?

queue.yaml:

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

Odpowiedzi:

1 dla odpowiedzi № 1

Zachowałbym pewne wartości w memcache, jak number of tasks in queue i timestamps of tasks that failed.

Każde zadanie musiałoby wykonać następujące zadania:

  • na początku oblicz procentową wartość toczenia (w ciągu ostatnich X minut) i wyjdź, jeśli procent jest zbyt wysoki, lub zwiększ number of tasks licznik i kontynuuj.
  • w przypadku awarii zmniejszyć number of tasks licznik i dodaj znacznik czasu do failed tasks lista.
  • na sukces, zmniejsz number of tasks licznik.

Aby obliczyć procent walcowania, weź całą listę failed tasks i odfiltruj te znaczniki czasu, które są zbyt stare (ponad X minut temu). Umieść nową listę z powrotem w memcache. Następnie weź number of tasks licz i oblicz 100.0 * (number of failed tasks) / (number of tasks) aby uzyskać swój procent. Jeśli przekroczy próg Y%, natychmiast zakończ zadanie.