import logging import datetime import pytz from scheduler.asyncio import Scheduler from settings import TIMEZONE, ORDER_TIME, ORDER_TIMEOUT from orders import order_issue, order_check logger = logging.getLogger(__name__) SATURDAY = 5 SUNDAY = 6 class OrderScheduler(): def __init__(self, loop): self.tz = pytz.timezone(TIMEZONE) self.scheduler = Scheduler(loop=loop, tzinfo=self.tz) order_time_arr = list(map(int, ORDER_TIME.split(':'))) order_time = datetime.time(hour=order_time_arr[0], minute=order_time_arr[1], tzinfo=self.tz) self.scheduler.daily(order_time, self.scheduled_order) logger.info(self.scheduler) async def scheduled_order(self): day_of_week = datetime.datetime.now(tz=self.tz).weekday() if (day_of_week in [SATURDAY, SUNDAY]): return await order_issue() # Schedule check self.scheduler.once( datetime.datetime.now(tz=self.tz) + ORDER_TIMEOUT + datetime.timedelta(seconds=10), self.scheduled_check ) logger.info(self.scheduler) async def scheduled_check(self): await order_check()