Он работает как положено, но с небольшой проблемой. Если выполнение метода do_job() занимает больше минуты. Он ждет еще 1 минуту после завершения метода do_job() и планирует еще одно вычисление.
Но я хочу, чтобы время запускалось через 1 минуту от начала времени выполнения. Есть ли возможность это сделать?
РЕДАКТИРОВАТЬ
Код: Выделить всё
import schedule
import time
def job():
print("Process triggered at:", time.strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(30)
print("Process ended at:", time.strftime("%Y-%m-%d %H:%M:%S"))
# Define the frequency (in seconds) at which the process should be triggered
frequency_seconds = 60 # Trigger every 60 seconds
# Schedule the job to run at the specified frequency
schedule.every(frequency_seconds).seconds.do(job)
# Main loop to keep the script running
while True:
schedule.run_pending()
time.sleep(1) # Sleep for 1 second to avoid high CPU usage
Процесс запущен в: 2024-03-25 06:57:23
Процесс завершился: 25 марта 2024 г., 06:57:53
Процесс запущен: 25 марта 2024 г. 06:58:54
Процесс завершился: 2024-03-25 06:59:24
Замечено, что следующий процесс запускается после первого процесс завершился. Разница во времени между временем окончания первого процесса и временем запуска второго процесса составляет 60 секунд.
Но я ожидаю, что разница во времени между временем запуска первого процесса и временем запуска второго процесса должна составлять 60 секунд. 60 секунд не должны рассчитываться от времени окончания процесса. job() должен вызываться ровно с интервалом в 60 секунд. Таким образом, ожидаемый результат будет выглядеть следующим образом:
Процесс запущен: 25 марта 2024 г., 06:57:23
Процесс завершен: 03.2024 г. 25 06:57:53
Процесс запущен: 25 марта 2024 г. 06:58:23
Процесс завершился: 25 марта 2024 г., 06:58:53
Подробнее здесь: https://stackoverflow.com/questions/782 ... ing-python