Получить статус элементов в списке и обработать, только если помечен флаг - PullRequest
0 голосов
/ 22 февраля 2019

Таким образом, в настоящее время я запускаю пакетные задания, которые отправляют эхо-запросы API, и я сохраняю номера идентификаторов поиска для заданий, которые запускаю в списке (например, searches_to_process = [ ... ]).

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

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

Так что вПо сути, поток будет выглядеть примерно так:

Check API if job is done -> If yes, obtain result and remove the id from list. -> If no then it should move to next item and just come back to it later.

Одна проблема, с которой я зацикливаюсь, это то, что я думаю, что я должен использовать цикл while, но в этомесли я не думаю, что могу знать, какую работу я сейчас проверяю и используя цикл for, он будет повторяться по всему только один раз.

Итак, как мне обойти это (возможное) препятствие?

Приложение:

Пинг для статуса задания:

status = requests.get(url + '/services/search/jobs/' + search_id.text,
                      headers=headers,
                      verify=False)

, который возвращает некоторый XML, который затем обрабатывается, чтобы найти требуемое значение: <s:key name="isDone">1</s:key> (т.е. я смогу получить двоичный файл1 или 0 в качестве возвращаемого значения, обработка XML не вызывает проблем.)

Структура (и) данных - это в основном список строк, которые добавляются к URL-адресу API, например, id_1_2_3_4 get добавляетсяи становится: https://www.website.com/services/search/jobs/id_1_2_3_4, для которого я могу получить ответ XML (или JSON) и получить статус задания.

После подтверждения статуса я могу просто снова пропинговать API, но добавить /results к URL, чтобы получить готовые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...