kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как правильно завершать цикличный скрипт?

Есть скрипт, которые бесконечно в цикле мониторит данные и проводит определенные записи в БД, как правильно его остановить?
Допустим выглядит примерно так:
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() выходить.
Какие-то другие варианты есть? Не очень нравится идея с отдельным потоком.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Kapustlo
Здравствуйте, вы попросили рассказать о другом возможном подходе, так вот, я вам предлагаю использовать утилиты, которые помогают запускать скрипты через определённый промежуток времени. Например, вы можете использовать "cron".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы