График повторяющихся заданий в Python с указанием единицы времени в качестве переменной

Я использовал отличный schedule Библиотека для запуска различных заданий, но есть одна вещь, которую я не могу найти.

Код Python для выполнения задания каждые 10 минут выглядит следующим образом:

schedule.every(10).minutes.do(job)

Вопрос: как бы я элегантно включил единицу времени в качестве переменной? Я хочу сделать что-то вроде этого:

interval = 3
time_unit = 'hours'
schedule.every(interval).units(time_unit).do(job)

запускать работу каждые 3 часа. Использование переменных позволит настроить расписание.

За исключением того, что приведенный выше пример не работает: units член только для чтения значения.

eval не является безопасным в этом контексте.

1 ответ

Я ответил на свой вопрос. Спасибо тем, кто ответил.

# specify time interval units as a variable in code...
interval = 3
time_unit = 'hours'
schedule.every(interval).set_units(time_unit).do(job)

Исправление в schedule библиотека (класс Job)- добавьте следующий метод:

def set_units(self, unit):
    self.unit = unit if unit[-1] == 's' else unit + 's'
    return self
Другие вопросы по тегам