Алгоритм для обработки застрявших рабочих мест через поток воздуха - PullRequest
0 голосов
/ 30 января 2019

Я использую Airflow для управления рабочими процессами для своих аналитических работ.Чтобы определить политику повторных попыток (модуль Python), я хочу построить логику.

ТОЧКА ДЛЯ РАССМОТРЕНИЯ: -

  1. С увеличением данных длительность задания постепенно увеличивается.Возможно, в один прекрасный день появилось больше данных, которые привели к резкому скачку продолжительности работы;в противном случае ожидается, что рост будет постепенным.
  2. И иногда рабочие места застревают из-за различных проблем и часто требуют прекращения работы с последующим перезапуском.

Итак, я пытаюсь создать логику, которая автоматически решит,

  1. прекратить работу
  2. Завершить и перезапустить
  3. Завершите работу и пометьте как сбой, чтобы последующие задания не запускались.
  4. Не предпринимайте никаких действий и сообщайте DevOps об этой проблеме (Действие вручную)

Итак, я просто хочустатистически знать, каким будет эффективный способ достижения вышеуказанных результатов.

Давайте рассмотрим 2 задания X и Y.

Информация о заданиях -

*FOR JOB X - *
----------------

datetime    Job Name    Job Duration(in mins)

1/25/2019   X           10
1/26/2019   X           11
1/27/2019   X           10
1/28/2019   X           9
1/29/2019   X           15
1/30/2019   X           20
1/31/2019   X           18
2/1/2019    X           19
2/2/2019    X           20
***2/3/2019 X           56 

Avg Time Taken By Job X (till 2nd feb)      14.66666667
Standard Deviation(Calculated till 2nd feb) 4.69041576
Live Deviation (as on 3rd feb)              13.79855065



*For Job Y - *
----------------

datetime    Job Name    Job Duration(in mins)

1/25/2019   Y           50
1/26/2019   Y           50
1/27/2019   Y           51
1/28/2019   Y           53
1/29/2019   Y           59
1/30/2019   Y           48
1/31/2019   Y           49
2/1/2019    Y           53
2/2/2019    Y           55
***2/3/2019 Y           200

Avg Time Taken By Job Y (till 2nd feb)      52
Standard Deviation(Calculated till 2nd feb) 3.4278273
Live Deviation (as on 3rd feb)              44.50572997

Затем я подумал о создании новой таблицы, которая будет структурирована как -

** Производная таблица - **

Job Name    Avg. Duration   Acceptable Deviation    Live Deviation

X           14.66666667        4.69041576           13.79855065
Y                 52           3.4278273            44.50572997

**NOTE:** the Avg calculated ( till 2nd feb) for the above table        

Мой анализ

Начиная с отклонения в реальном времени (что является результатом выполнения заданий X и Y, выполнявшихся намного быстрее, чем обычно)является слишком высоким по сравнению со стандартным отклонением, будет взят один из возможных результатов, как указано выше.

Вопросы, на которые необходимо ответить

  1. Это правильный подход?
  2. Какой лучший подход я могу использовать?
  3. Существует ли какая-либо библиотека Native python, которую можно использовать для любых целей (средняя, ​​дисперсия и т. Д.)?
...