Есть скрипт, которые бесконечно в цикле мониторит данные и проводит определенные записи в БД, как правильно его остановить?
Допустим выглядит примерно так:
def get_data(proxy, url):
response = requests.get(url).text()
for _ in range(n):
pass
if something is not None:
cursor.execute('UPDATE something SET col=0 WHERE col2=2')
if __name__ == "__main__":
while True:
get_data()
Если я пошлю
Ctrl + C действие скрипта может прерваться посреди итерации, чего не хотелось-бы. Т.е., я хочу, чтобы при нажатии
Ctrl + C функция
get_data() завершила свою работу и после этого скрипт выключился.
Думаю стартовать
get_data() в потоке, а в основном перехватывать
KeyboardInterrupt и при его отлове с
join() ждать завершение
get_data() и с
sys.exit() выходить.
Какие-то другие варианты есть? Не очень нравится идея с отдельным потоком.