diff --git a/Post_RSS_on_SubStack.py b/Post_RSS_on_SubStack.py index 3bcd3e6..da28f4b 100644 --- a/Post_RSS_on_SubStack.py +++ b/Post_RSS_on_SubStack.py @@ -79,12 +79,23 @@ class SubStackTask: # Calculate the time until 6 AM next day next_run = (now + datetime.timedelta(days=1)).replace(hour=6, minute=5, second=0, microsecond=0) sleep_seconds = (next_run - now).total_seconds() - LOG.info("Waiting for " + str(sleep_seconds) + " seconds for next scan") - # Wait until the next run time - await asyncio.sleep(sleep_seconds) + + while sleep_seconds > 0: + # Check if the remaining time is a multiple of 3600 seconds + if sleep_seconds % 3600 == 0: + LOG.info(f"Waiting for {sleep_seconds} seconds for next scan") + + # Wait for some time before checking again + # Here, we choose to wait for less than an hour (e.g., 59 minutes) to ensure we hit the hourly mark + await asyncio.sleep(min(sleep_seconds, 59 * 60)) + + # Recalculate the remaining sleep time + now = datetime.datetime.now() + sleep_seconds = (next_run - now).total_seconds() + LOG.info("Going to run the daily task") # Run the daily task - await self.daily_task() + await self.daily_task()