Примените функцию проверки к каждой строке кадра данных:
df['Holiday'] = df.apply(lambda x:\
calendar().holidays(start=x['Start Date'],
end=x['End Date']).size, axis=1)\
.astype(bool) # Convert the answer to a boolean
#0 False
#1 True
#2 False
#3 False
На основе моего опыта можно заставить это работать "достаточно хорошее", но не прекрасные. Я рекомендовал бы реализовать Ваши задачи повторения в сервисе окон. В зависимости от того, что делают задачи, служба Windows, возможно, не должна была бы даже говорить с веб-приложением или наоборот, например, если обе работы с той же базой данных. Иначе Вы могли все еще использовать, например, WCF для коммуникации.
Большое преимущество: сервис окон запустится с ОС, можно легко настроить, запустить и остановить его с помощью панели управления, у Вас есть встроенный контроль с помощью Windows Event Log, можно обновить фоновый сервис и веб-приложение независимо и т.д.
Если это не опция, например, потому что Вы находитесь в общей среде хостинга, я рекомендовал бы следующее:
Даже затем Вы не можете быть уверены, что Ваш фоновый поток всегда работает, если у Вас нет обычного трафика круглосуточно. Также имейте в виду, что в общей среде хостинга очень распространено закрыть пулы приложений, если нет никакого действия в течение нескольких часов. Вы могли попытаться улучшить это путем установки запланированной задачи на клиентской машине в собственной сети, делающей легкий Запрос HTTP на приложении каждые несколько минут, только гарантировать, что приложение всегда работает.
Когда Jeff сделал Stackoverflow, у него была подобная проблема.
Его решение состояло в том, чтобы использовать истечение кэша. Вы поместили что-то в кэш и затем когда он истекает, событие запущено в поток направления лица, не использующего своего права. В конечном счете обработчик для истечения, Вы всовываете некоторый код, чтобы повторно добавить объект к кэшу и сделать независимо от того, что работа обслуживания должна быть сделана для Вашего приложения
Используя эту технику, легко отвечают Вашим дополнительным вопросам:
Вы могли сделать маленькую страницу управления для конфигурирования этих опций.
Это дает Вам хороший путь примерно к процессам обслуживания времени в Вашем веб-приложении. Это не требует отдельной службы Windows, которая является большой победой.