У меня есть скрипт, который зацикливается бесконечно и делает вызов Oracle через cx_oracle каждые X секунд. У меня также есть обработчик сигнала, который должен позволить сценарию корректно завершить работу после завершения процедуры оракула. Проблема, с которой я сталкиваюсь, заключается в том, что вызов оракула, кажется, прерывается с помощью sigint или sigterm, даже если я обрабатываю их.
Выдает следующую ошибку: ORA-01013: user requested cancel of current operation
Вот пример кода (обрезается):
def signal_handler(signum, frame):
print time.strftime(settings.FDATE) + " - Quitting safely..."
global exit
try:
exit = 1
except KeyboardInterrupt:
exit = 1
print 'Script is quitting safely, please wait...'
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
while not exit:
#database call here
sleep 5 #actually taking this value from a settings file
Я не уверен, имеет ли это значение, но я также использую многопоточность на основе результатов вызова базы данных, но ошибка все еще происходит в основном цикле while.