From 01217bc3b3edcf5f086a1510eb50c01fb11b5321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Sat, 23 Nov 2024 13:47:43 +0200 Subject: [PATCH] Updated the AndTrigger example to use CalendarIntervalTrigger instead of IntervalTrigger --- apscheduler/triggers/combining.py | 9 +++++++++ docs/modules/triggers/combining.rst | 9 +++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apscheduler/triggers/combining.py b/apscheduler/triggers/combining.py index 5790b3ac2..653f9b571 100644 --- a/apscheduler/triggers/combining.py +++ b/apscheduler/triggers/combining.py @@ -50,6 +50,15 @@ class AndTrigger(BaseCombiningTrigger): Trigger alias: ``and`` + .. warning:: This trigger should only be used to combine triggers that fire on + specific times of day, such as + :class:`~apscheduler.triggers.cron.CronTrigger` and + class:`~apscheduler.triggers.calendarinterval.CalendarIntervalTrigger`. + Attempting to use it with + :class:`~apscheduler.triggers.interval.IntervalTrigger` will likely result in + the scheduler hanging as it tries to find a fire time that matches exactly + between fire times produced by all the given triggers. + :param list triggers: triggers to combine :param int|None jitter: delay the job execution by ``jitter`` seconds at most """ diff --git a/docs/modules/triggers/combining.rst b/docs/modules/triggers/combining.rst index a57f9cf5e..1e777902e 100644 --- a/docs/modules/triggers/combining.rst +++ b/docs/modules/triggers/combining.rst @@ -17,18 +17,19 @@ API Examples -------- -Run ``job_function`` every 2 hours, but only on Saturdays and Sundays:: +Run ``job_function`` every 3 days (at midnight), but only when that date lands on on a +Saturday or Sunday:: from apscheduler.triggers.combining import AndTrigger - from apscheduler.triggers.interval import IntervalTrigger + from apscheduler.triggers.calendarinterval import CalendarIntervalTrigger from apscheduler.triggers.cron import CronTrigger - trigger = AndTrigger([IntervalTrigger(hours=2), + trigger = AndTrigger([CalendarIntervalTrigger(days=3), CronTrigger(day_of_week='sat,sun')]) scheduler.add_job(job_function, trigger) -Run ``job_function`` every Monday at 2am and every Tuesday at 3pm:: +Run ``job_function`` every Monday at 2 am and every Tuesday at 3 pm:: trigger = OrTrigger([CronTrigger(day_of_week='mon', hour=2), CronTrigger(day_of_week='tue', hour=15)])