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

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

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 11:11
10000 руб./за проект
29 мар. 2024, в 10:00
10000 руб./за проект
29 мар. 2024, в 09:59
750 руб./в час