gear-orders/scheduling.py
2025-11-13 22:03:20 -06:00

45 lines
1.1 KiB
Python

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()