Nano Hash - криптовалюты, майнинг, программирование

Как работает кнопка «Остановить сборку» в Bamboo?

введите здесь описание изображения

Как работает кнопка «Остановить сборку» в Bamboo? У меня есть задание, которое вызывает скрипт Python3 для запуска некоторых тестов на машине. Отправляет ли Bamboo Ctrl+C (SIGINT) процессу при нажатии кнопки «Остановить сборку»? СИГКИЛЛ?

Мой сценарий использует многопроцессорность и имеет изящное завершение работы, когда он получает сигнал SIGINT, но когда я нажимаю «Остановить сборку», он, кажется, убивает основной процесс и позволяет остальным процессам продолжать жить...

24.01.2020

Ответы:


1

Основываясь на моих журналах Bamboo, кажется, что он отправляет сигнал SIGQUIT, за которым через пять секунд следует сигнал SIGTERM:

17:24:02    Executing kill -3 66265  # this sends SIGQUIT
17:24:07    Killing: 66265
17:24:07    Executing kill 66265 # this sends SIGTERM

Добавив обработчик сигнала таким образом, я смог поймать его и изящно выйти из своих процессов:

def signal_handler(self, signum, frame):
    print(f"Received a 'kill -{signum}'! Cleaning up...")
    self.cleanup()

# put these inside of the main function
signal.signal(signal.SIGQUIT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)

Согласно это сообщение на форумах Bamboo, Bamboo отправляет SIGTERM процессу, но не упоминает SIGQUIT, которое отправляется первым.


введите здесь описание изображения

Вышеупомянутое кажется верным только в том случае, если вы включите принудительную остановку сборки в Plan Configuration -> Other. Если принудительная остановка сборки не включена, то остановка сборки ничего не делает.

24.01.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..