fix scheduler, add logging for grt free slots

This commit is contained in:
2025-12-20 13:37:21 +03:00
parent 0e89e71e20
commit c6aef69caf
4 changed files with 16 additions and 2 deletions
+2
View File
@@ -11,6 +11,8 @@ import os
app = Flask(__name__) app = Flask(__name__)
app.config.from_object(Config) app.config.from_object(Config)
flask_app = app
db.init_app(app) db.init_app(app)
os.makedirs("logs", exist_ok=True) os.makedirs("logs", exist_ok=True)
+5 -2
View File
@@ -1,9 +1,12 @@
from flask import current_app from extensions import flask_app
def with_app_context(func): def with_app_context(func):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
with current_app.app_context(): if flask_app is None:
raise RuntimeError("Flask app is not initialized")
with flask_app.app_context():
return func(*args, **kwargs) return func(*args, **kwargs)
return wrapper return wrapper
+2
View File
@@ -0,0 +1,2 @@
# extensions.py
flask_app = None
+7
View File
@@ -112,15 +112,20 @@ def getFreeSlots(vkPost) -> dict:
url = medodsApi.url + requestParams.url_path url = medodsApi.url + requestParams.url_path
logger.info(url)
logger.info(json)
response = send_request( response = send_request(
requestParams.method, requestParams.method,
url, url,
json, json,
) )
if not response: if not response:
logger.error("Ответ не получен")
return {} return {}
slotsDataFull = response.json() slotsDataFull = response.json()
logger.info(slotsDataFull)
if len(slotsDataFull.keys()) == 0: if len(slotsDataFull.keys()) == 0:
logger.error("Нет свободных приемов")
return {} return {}
firstKey = list(slotsDataFull.keys())[0] firstKey = list(slotsDataFull.keys())[0]
slotsData = {"date": firstKey, "slots": slotsDataFull.get(firstKey)} slotsData = {"date": firstKey, "slots": slotsDataFull.get(firstKey)}
@@ -134,10 +139,12 @@ def setDynamicText():
from app import logger from app import logger
try: try:
logger.info("Получение информации о посте")
vkPost = VkPost.query.first() vkPost = VkPost.query.first()
if not vkPost: if not vkPost:
logger.error("Информация для размещения поста не найдена") logger.error("Информация для размещения поста не найдена")
return vkPost return vkPost
logger.info("Получение информации о свободных приемах")
freeSlots = getFreeSlots(vkPost) freeSlots = getFreeSlots(vkPost)
if len(freeSlots.keys()) == 0: if len(freeSlots.keys()) == 0:
logger.error("Нет свободных приемов") logger.error("Нет свободных приемов")