У меня есть исполнитель, который выполняет телефонные звонки в соответствии с указаниями пользователя.
Я хочу назначить время только в указанном c диапазоне часов в течение дня, например, с 8:00 до 18:00.
Исполнитель работает 24 часа в сутки и проверяет записи в базе данных, выполнять или нет телефонный звонок в данный момент.
Есть ли какой-нибудь хитрый способ планировать будущие звонки с помощью python datetime
и каким-то образом установить эти работает часов с заданной частотой и количеством вызовов.
Например, я хочу запланировать 4 вызова с частотой 1 час. Допустим, это 4 вечера. Следующий звонок должен быть запланирован на 4 вечера, 5 вечера, а следующий - на следующий день в 8:00, 10:00.
Я ожидаю, что datetime
будет работать в таких условиях, как показано ниже:
def schedule(no_of_calls: int, frequency: timedelta):
dt = get_a_magic_datetime_with_hour_range()
value = dt.now() # this will get 4PM in above's example. Though if it would be 10PM it would return 8AM next day.
for i in range(no_of_calls):
save_to_db(value)
value += frequency
Я знаю, что я мог бы создать свой собственный working_datetime
, который бы делал правильные проверки и возвращал значения из диапазона рабочих часов, но, возможно, уже есть что-то подобное.
Если вам все еще не пришла в голову идея - подумайте об этом как о парковочном счетчике - если вы платите не по часам - он будет считаться с начала оплаты часов на следующий день (или же, если прошло более 12 часов утра) ).