fix(logging): write raw updates in production too
This commit is contained in:
1 parent
de638bb4d0
commit
089c59bc68
3 files changed
+19
-17
No files matched your search
@@ -255,8 +255,11 @@ def is_development_environment() -> bool:
|
||||
|
||||
|
||||
def configure_raw_update_logging(dispatcher: Dispatcher) -> bool:
|
||||
if not is_development_environment():
|
||||
return False
|
||||
"""Persist incoming updates for diagnostics in every deploy environment.
|
||||
|
||||
Групповые события (администрирование и поддержка) видно только через
|
||||
мидлваре — без него прод-бот остаётся «чёрным ящиком».
|
||||
"""
|
||||
dispatcher.update.outer_middleware(RawUpdateMiddleware())
|
||||
return True
|
||||
|
||||
@@ -1660,8 +1663,9 @@ async def main() -> None:
|
||||
analytics.init_db()
|
||||
payments.init_payments_table()
|
||||
await asyncio.to_thread(support.init_support_table)
|
||||
if is_development_environment():
|
||||
await asyncio.to_thread(init_raw_updates_db)
|
||||
# Инициализируем БД сырых апдейтов в любом окружении: в проде она нужна,
|
||||
# чтобы видеть события из групп администрирования и поддержки.
|
||||
await asyncio.to_thread(init_raw_updates_db)
|
||||
token = os.environ.get("BOT_TOKEN", "").strip()
|
||||
if not token:
|
||||
raise RuntimeError("BOT_TOKEN is required")
|
||||
|
||||
+10
-12
@@ -92,15 +92,13 @@ class RawUpdateMiddlewareTests(unittest.IsolatedAsyncioTestCase):
|
||||
|
||||
|
||||
class RawUpdateModeTests(unittest.TestCase):
|
||||
def test_middleware_is_registered_only_for_development(self):
|
||||
dispatcher = Dispatcher()
|
||||
with patch.object(bot, "DEPLOY_ENV", "production"), patch.object(
|
||||
dispatcher.update, "outer_middleware"
|
||||
) as register:
|
||||
self.assertFalse(bot.configure_raw_update_logging(dispatcher))
|
||||
register.assert_not_called()
|
||||
with patch.object(bot, "DEPLOY_ENV", "development"), patch.object(
|
||||
dispatcher.update, "outer_middleware"
|
||||
) as register:
|
||||
self.assertTrue(bot.configure_raw_update_logging(dispatcher))
|
||||
register.assert_called_once()
|
||||
def test_middleware_is_registered_in_every_environment(self):
|
||||
"""Прод-бот тоже пишет сырые апдейты: групповые события видны только так."""
|
||||
for deploy_env in ("production", "development"):
|
||||
with self.subTest(deploy_env=deploy_env):
|
||||
dispatcher = Dispatcher()
|
||||
with patch.object(bot, "DEPLOY_ENV", deploy_env), patch.object(
|
||||
dispatcher.update, "outer_middleware"
|
||||
) as register:
|
||||
self.assertTrue(bot.configure_raw_update_logging(dispatcher))
|
||||
register.assert_called_once()
|
||||
Reference in new issue
Block a user