Многопоточность в Azure API

Мне нужно написать почти 300 различных вики-страниц, разделенных по типу: [Epic, Features, ....], используя Azure Devops Python Api.

И это занимает у меня много минут, когда я пишу их один за другим

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

if (multithreading):
        threads = []
        for task in task_list:
            thread = threading.Thread(target=write_one_epic, args=(task, requests_session)
            thread.start()
            threads.append(thread)
        for thread in threads:
            thread.join()

Это привело меня к этой ошибке

The wiki page operation failed with message : TF401028: The reference 'refs/heads/wikiMaster' has already been updated by another client, so you cannot update it. Please try again.

Обновите, я попробовал с ThreadPoolExecutor, и это привело к той же ошибке

Ошибка возникает при попытке создать новую страницу

wiki.create_or_update_page(content, Constant.project, Constant.wikiIdentifier, self.actual_path, None)

Похоже, что он поддерживается репозиторием Git, и параллельные операции, которые записывают в ссылку master, завершаются неудачей. Самое простое решение, конечно, — просто добавить логику повтора...

AKX 15.07.2024 11:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Операция со страницей вики завершилась неудачей с сообщением: TF401028: ссылка «refs/heads/wikiMaster» уже была обновлена ​​другим клиентом, поэтому вы не можете ее обновить. Пожалуйста, попробуйте еще раз.

Это могло произойти при параллельном обновлении одной и той же вики.

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

Кроме того, API Python Azure DevOps представляет собой тонкую оболочку API REST Azure DevOps. Вы можете попробовать использовать REST API непосредственно для этой операции. Вы можете найти образец сценария по ссылке здесь.

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

Kaiwinta 15.07.2024 15:01

Многопоточность - хорошая идея, но на самом деле вики проекта хранится в репозитории git, проблема вызвана тем, как работает Git, боюсь, вам может потребоваться изменить способ создания вики.

wade zhou - MSFT 15.07.2024 15:09

Другие вопросы по теме