Какие инструменты или алгоритмы организации очередей поддерживают честную очередь заданий - PullRequest
0 голосов
/ 30 октября 2019

Я сталкиваюсь с известной проблемой, но не могу найти простой ответ, который подсказывает мне, как ее решить.

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

Моя проблема заключается в том, что я получаю за все время работы, которые развертывают 10, 100 или 1000 тестов (я преувеличиваю, ноэто помогает сделать точку). Во многих заданиях развернуто 10 тестов, в некоторых развернуто 100 тестов, а в одном или двух - 1000 тестов.

Я хочу развернуть тесты таким образом, чтобы задержка выполнения справедливым образом распределялась между всеми заданиями. Позвольте мне объяснить.

Если на простаивающем сервере очень большая работа занимает 2 часа, было бы приемлемо, если бы она выполнялась через 4 часа.

Если на небольшую работу уходит 3 минутына простаивающем сервере было бы приемлемо, если бы он завершился через 15 минут.

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

Я думаю, что решение приоритетных очередей может быть решением, поэтому динамическое изменение весов в большой очереди сделает его быстрее при необходимости,

Существует ли программное обеспечение для очереди, которое знает, как автоматически выполнить вышеизложенное. Допустим, я даю каждому заданию некоторое время, и программное обеспечение очереди знает, как расставить приоритеты для тестов из каждой очереди, чтобы ни одно задание не задерживалось слишком долго?

Спасибо.

Добавление информации после комментариев Джима.

Недостаточно информации для предоставления ответа. По сути, работа - это просто список тестов? Можно ли одновременно запустить несколько тестов для одной работы? Вы всегда запускаете все тесты для работы? - Джим Мишель, 14 часов назад

  1. В каждом задании выполняется от 10 до 1000 тестов.
  2. Тест может выполняться одновременно со всеми другими тестами того же или других пользователей без конфликтов.
  3. Все тесты, которые были развернуты заданием, планируется запустить.

Дополнительная информация:

До сих пор я узнал, что приоритетные очереди на самом деле касаются применения весов к элементам в одной очереди, где элементы с наивысшим выбираются первыми. Если два или более элементов имеют одинаковый наивысший приоритет, первый поступающий элемент будет выполнен первым.

Когда я размышлял о приоритетных очередях, это было больше в виде:

  1. Несколько очередей, где каждая очередь имеет приоритет, назначенный всей очереди.
  2. Приоритет может быть изменен динамически во время выполнения, в зависимости от некоторых условий, например, установки ограничения времени выполнения всей очереди.
...