Код: Выделить всё
import time
def cleanUp():
#delete some temporary files and so on
print("Clean up done")
if __name__=="__main__":
startTime = time.time()
while time.time() - startTime < 60:
# Performing some commands
print("Still running")
cleanUp()
к тому, что Дженкинс отправляет сигнал «TERM» после остановки процесса. Поэтому я добавил следующее + механизм контроля, чтобы увидеть, работает ли он, поскольку Дженкинс не будет показывать остальную часть журнала после остановки задания (сразу покажет «ПРЕРВАНО», см. ссылку):
Код: Выделить всё
import time
import signal
def cleanUp():
#delete some temporary files and so on
print("Clean up done")
# Write some text to a file, to see if this part was actually run
with open(r"C:\temp\abx.txt", 'w') as file:
file.write("Process has been finished prematurely")
signal.signal(signal.SIGTERM, cleanUp)
if __name__=="__main__":
startTime = time.time()
while time.time() - startTime < 60:
# Performing some commands
print("Still running")
cleanUp()
Мой вопрос: правильно ли использовать signal.signal(signal.SIGTERM, cleanUp) (или мне следует использовать что-то другое?) или я допустил ошибку при использовании signal.signal ?
Я также пытался зарегистрировать cleanUp с помощью atexit, но это тоже не дало тех результатов, на которые я надеялся.
< Strong>EDIT 1: Одна вещь, о которой я не упомянул выше, — это тот факт, что мне нужно передать некоторые входные данные функции cleanUp. Я уже думал об использовании действий после сборки в конвейере, но это поставило бы тот же вопрос о том, как гарантировать, что после завершения процесса необходимые переменные будут переданы в конвейер.
Спасибо. много!
Подробнее здесь: https://stackoverflow.com/questions/782 ... is-aborted