Tg with Notifications, bags fixxed
This commit is contained in:
60
daily_availability.py
Normal file
60
daily_availability.py
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env python3
|
||||
# daily_availability.py
|
||||
|
||||
import logging
|
||||
from datetime import date
|
||||
import httpx
|
||||
from apscheduler.schedulers.blocking import BlockingScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
from config import *
|
||||
|
||||
# ====== CONFIGURATION ======
|
||||
API_BASE = "http://127.0.0.1:8000"
|
||||
TIMEOUT = httpx.Timeout(connect=5.0, read=30.0, write=5.0, pool=5.0)
|
||||
|
||||
# ====== LOGGING SETUP ======
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s | %(levelname)s | %(message)s',
|
||||
handlers=[logging.FileHandler("daily_availability.log", encoding="utf-8")]
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# ====== JOB FUNCTION ======
|
||||
def check_availability():
|
||||
today = date.today().isoformat()
|
||||
url = f"{API_BASE}/availability_group"
|
||||
headers = {
|
||||
"X-API-KEY": API_KEY,
|
||||
"Content-Type": "application/json" # хотя httpx сам проставит, но можно явно
|
||||
}
|
||||
payload = {"dates": [today]}
|
||||
|
||||
logger.info(f"Запрос создания доступности групп на {today}")
|
||||
try:
|
||||
with httpx.Client(timeout=TIMEOUT) as client:
|
||||
response = client.post(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
logger.info(f"Успешно создана доступность: {data}")
|
||||
except httpx.HTTPStatusError as e:
|
||||
allow = e.response.headers.get("Allow")
|
||||
logger.error(f"Метод не разрешён (status={e.response.status_code}), Allow={allow}")
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при запросе доступности: {e}")
|
||||
|
||||
|
||||
# ====== SCHEDULER SETUP ======
|
||||
if __name__ == "__main__":
|
||||
scheduler = BlockingScheduler(timezone="Asia/Yerevan")
|
||||
# Запускаем задачу каждый день в 00:01
|
||||
scheduler.add_job(
|
||||
check_availability,
|
||||
trigger=CronTrigger(hour=0, minute=1),
|
||||
name="daily_availability_check"
|
||||
)
|
||||
logger.info("Scheduler запущен. Ожидание выполнения задачи в 00:01...")
|
||||
try:
|
||||
scheduler.start()
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
logger.info("Scheduler остановлен пользователем")
|
||||
Reference in New Issue
Block a user