Я работаю над системой планирования на Python, которая соответствует следующим правилам.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я работаю над системой планирования на Python, которая соответствует следующим правилам.

Сообщение Anonymous »

Я работаю над системой планирования на Python, которая придерживается следующих правил:
  • Каждый день имеет фиксированное временное окно: с 9:00 до 13:00 (в местном часовом поясе пользователя).
  • Если текущее время выходит за пределы этого окна:

    До 9 :00 утра: настроить на 9:00 утра + интервал.
  • После 13:00: расписание на следующий день в 9:00 + интервал.
[*]Система планирования должна работать только 3 дня подряд.
[*]Если планирование превышает окно третьего дня (13:00), оно должно быть остановлено или ограничено. в 13:00 третий день.
[*]Мне нужно рассчитать следующее запланированное время в формате UTC, но все сравнения должны выполняться в местном часовом поясе пользователя. Я реализовал функцию, но логика перехода к окну следующего дня и остановки на третьем дне работает неправильно.

Вот ядро моей текущей реализации:

Код: Выделить всё

def get_next_scheduled_time(country, interval_seconds=20):
tz_name = time_zone_mapping.get(country, "UTC")
timezone = pytz.timezone(tz_name)

now_local = datetime.now(pytz.utc).astimezone(timezone)

base_time = timezone.localize(datetime(now_local.year, now_local.month, now_local.day, 9, 0, 0))
end_time = timezone.localize(datetime(now_local.year, now_local.month, now_local.day, 13, 0, 0))

staggered_time = now_local + timedelta(seconds=interval_seconds)

if staggered_time < base_time:
staggered_time = base_time + timedelta(seconds=interval_seconds)
elif base_time  max_scheduled_time:
staggered_time = timezone.localize(max_scheduled_time).astimezone(timezone)

return staggered_time.astimezone(pytz.utc).strftime("%Y-%m-%dT%H:%M:%S+00:00")
Переход на следующий день не всегда совпадает с началом временного окна (9:00 утра).
После перехода он иногда пропускает или перекрывает заданное временное окно.
Я не уверен, следует ли мне использовать timedelta(days=...) или timedelta(hours=...) для смены дней, чтобы обеспечить точный контроль.
Желаемый результат:
  • Если текущее время находится за пределами окна Дня 1, запланируйте его на 9:00 Дня 2.
  • Если окно Дня 3 превышено, ограничьте планирование в 13:00 в день 3.
  • Все расчеты планирования должны учитывать местный часовой пояс, но выходные данные должны быть в формате UTC.
Как я могу исправить эту логику, чтобы обеспечить правильные ежедневные переходы и строгое соблюдение временных окон?

Подробнее здесь: https://stackoverflow.com/questions/793 ... owing-rule
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»