Как прекратить выполнение цикла while?
Во первых вместо time.sleep используйте schedule, по скольку ваше выполнение через неделю может сожрать гиг памяти. Во вторых, а не проще просто создать переменную и в том случае если она = False просто не выполнять цикл. Можно сделать программу асинхронной, что бы она не завершилась, после указания нечего не делать, и ждала следующих указаний. А и добавь логи с декоратором который будет ловить ошибки, а интервал бери с конфиг файла, который тебе нужно создать. Подозреваю что там очень плохая структура проекта ( не удивлюсь если ты писал всё в одном файле ) Если хочешь, то создай git репу и пул реквест, я сделаю заметки.
распараллеливай задачу, один поток выполняет работу (если есть флаг) другой поток контролирует флаг

хотя 30 минут ?  может тебе по крону ее исполнять ?