[ВОЛК] улучшение трассировки таймаута при постинге в телеграм
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+91
-10
@@ -7,6 +7,7 @@ import html
|
||||
import json
|
||||
import re
|
||||
import httpx
|
||||
import traceback
|
||||
from datetime import datetime, timezone
|
||||
from dotenv import load_dotenv
|
||||
from formatter import get_event_text
|
||||
@@ -205,7 +206,17 @@ async def publish_to_tg(vk_post_id):
|
||||
'parse_mode': 'HTML',
|
||||
'disable_notification': PUBLISH_SILENTLY
|
||||
}
|
||||
photo_response = await httpx_client.post(send_photo_url, json=photo_payload)
|
||||
try:
|
||||
photo_response = await httpx_client.post(send_photo_url, json=photo_payload)
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке фото для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if photo_response.status_code == 200:
|
||||
photo_result = photo_response.json()
|
||||
@@ -235,7 +246,12 @@ async def publish_to_tg(vk_post_id):
|
||||
raise
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке изображения для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Детали таймаута: {type(e).__name__}: {e}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
except Exception as e:
|
||||
logger.warning(f"Не удалось отправить изображение для записи VK ID {vk_post_id}: {e}. Отправляем текстовое сообщение.")
|
||||
@@ -246,7 +262,17 @@ async def publish_to_tg(vk_post_id):
|
||||
'disable_notification': PUBLISH_SILENTLY,
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
text_response = await httpx_client.post(send_message_url, json=text_payload)
|
||||
try:
|
||||
text_response = await httpx_client.post(send_message_url, json=text_payload)
|
||||
except httpx.TimeoutException as timeout_e:
|
||||
logger.error(f"ТАЙМАУТ при отправке текста (fallback) для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(timeout_e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(timeout_e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(timeout_e)}")
|
||||
if hasattr(timeout_e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {timeout_e.request.method} {timeout_e.request.url if hasattr(timeout_e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if text_response.status_code == 200:
|
||||
text_result = text_response.json()
|
||||
@@ -280,7 +306,17 @@ async def publish_to_tg(vk_post_id):
|
||||
'disable_notification': PUBLISH_SILENTLY,
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
text_response = await httpx_client.post(send_message_url, json=text_payload)
|
||||
try:
|
||||
text_response = await httpx_client.post(send_message_url, json=text_payload)
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке текста для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if text_response.status_code == 200:
|
||||
text_result = text_response.json()
|
||||
@@ -333,7 +369,14 @@ async def publish_to_tg(vk_post_id):
|
||||
'caption': final_text,
|
||||
'parse_mode': 'HTML'
|
||||
}
|
||||
edit_caption_response = await httpx_client.post(edit_caption_url, json=edit_caption_payload)
|
||||
try:
|
||||
edit_caption_response = await httpx_client.post(edit_caption_url, json=edit_caption_payload)
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании подписи для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Детали таймаута: {type(e).__name__}: {e}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if edit_caption_response.status_code == 200:
|
||||
edit_result = edit_caption_response.json()
|
||||
@@ -359,7 +402,12 @@ async def publish_to_tg(vk_post_id):
|
||||
raise
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании подписи для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Детали таймаута: {type(e).__name__}: {e}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
except Exception as e:
|
||||
logger.warning(f"Не удалось отредактировать подпись для записи VK ID {vk_post_id}: {e}. Пробуем отредактировать текстовое сообщение.")
|
||||
@@ -370,7 +418,17 @@ async def publish_to_tg(vk_post_id):
|
||||
'parse_mode': 'HTML',
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
edit_text_response = await httpx_client.post(edit_text_url, json=edit_text_payload)
|
||||
try:
|
||||
edit_text_response = await httpx_client.post(edit_text_url, json=edit_text_payload)
|
||||
except httpx.TimeoutException as timeout_e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании текста (fallback) для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(timeout_e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(timeout_e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(timeout_e)}")
|
||||
if hasattr(timeout_e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {timeout_e.request.method} {timeout_e.request.url if hasattr(timeout_e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if edit_text_response.status_code == 200:
|
||||
edit_result = edit_text_response.json()
|
||||
@@ -400,7 +458,17 @@ async def publish_to_tg(vk_post_id):
|
||||
'parse_mode': 'HTML',
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
edit_text_response = await httpx_client.post(edit_text_url, json=edit_text_payload)
|
||||
try:
|
||||
edit_text_response = await httpx_client.post(edit_text_url, json=edit_text_payload)
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании текста для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if edit_text_response.status_code == 200:
|
||||
edit_result = edit_text_response.json()
|
||||
@@ -451,7 +519,17 @@ async def publish_to_tg(vk_post_id):
|
||||
else:
|
||||
poll_payload['close_date'] = post['poll_end_date']
|
||||
|
||||
poll_response = await httpx_client.post(send_poll_url, json=poll_payload)
|
||||
try:
|
||||
poll_response = await httpx_client.post(send_poll_url, json=poll_payload)
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке опроса для записи VK ID {vk_post_id}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
raise # Пробрасываем таймаут наверх
|
||||
|
||||
if poll_response.status_code == 200:
|
||||
poll_result = poll_response.json()
|
||||
@@ -516,9 +594,12 @@ async def publish_to_tg(vk_post_id):
|
||||
raise
|
||||
except httpx.TimeoutException as e:
|
||||
logger.error(f"ТАЙМАУТ при публикации записи VK ID {vk_post_id}")
|
||||
logger.error(f"Детали таймаута: {type(e).__name__}: {e}")
|
||||
logger.error(f"Тип исключения: {type(e).__name__}")
|
||||
logger.error(f"Сообщение об ошибке: {str(e)}")
|
||||
logger.error(f"Полная информация об исключении: {repr(e)}")
|
||||
if hasattr(e, 'request'):
|
||||
logger.error(f"Запрос, вызвавший таймаут: {e.request.method} {e.request.url if hasattr(e.request, 'url') else 'N/A'}")
|
||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||
# Убеждаемся, что БД не обновляется при таймауте
|
||||
return False
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user