Добавлен сбор телеметрии на ВМ2
This commit is contained in:
@@ -20,6 +20,13 @@ from app.domain import (
|
||||
validate_phone,
|
||||
)
|
||||
from app.repository import LeasedTask, LeasedWebhook, Profile, Repository
|
||||
from app.telemetry import (
|
||||
record_business_alert,
|
||||
record_dead_letter,
|
||||
record_limiter,
|
||||
record_retry,
|
||||
record_transition,
|
||||
)
|
||||
|
||||
INSERT_CRM_COMMAND = text(
|
||||
"""
|
||||
@@ -81,6 +88,7 @@ class WorkflowEngine:
|
||||
await self._manual(workflow_id, exc.code, task.user_id)
|
||||
await self.repository.complete_task(task, workflow_id)
|
||||
except RetryableWorkflow as exc:
|
||||
record_retry("task")
|
||||
delay = exc.retry_after or full_jitter_delay(
|
||||
task.attempt_count + 1,
|
||||
self.settings.retry_base_seconds,
|
||||
@@ -508,10 +516,12 @@ class WorkflowEngine:
|
||||
)
|
||||
if limiter_delay <= 0:
|
||||
break
|
||||
record_limiter(limiter_delay)
|
||||
await asyncio.sleep(limiter_delay)
|
||||
async with self._in_flight:
|
||||
result = await self.crm.call(method, params, mutating=mutating)
|
||||
status = result.outcome.value
|
||||
record_transition("command", status)
|
||||
async with self.repository.transaction() as connection:
|
||||
await connection.execute(
|
||||
UPDATE_CRM_COMMAND,
|
||||
@@ -580,6 +590,7 @@ class WorkflowEngine:
|
||||
*,
|
||||
selected_external_id: str | None = None,
|
||||
) -> None:
|
||||
record_business_alert(alert_type)
|
||||
fingerprint = safe_hash(f"{alert_type}:{user_id}")
|
||||
assert fingerprint is not None
|
||||
async with self.repository.transaction() as connection:
|
||||
@@ -727,6 +738,7 @@ class WorkflowEngine:
|
||||
)
|
||||
|
||||
async def _technical_failure(self, workflow_id: uuid.UUID, code: str) -> None:
|
||||
record_dead_letter("crm_command")
|
||||
async with self.repository.transaction() as connection:
|
||||
await connection.execute(
|
||||
text(
|
||||
|
||||
Reference in New Issue
Block a user