from typing import List, Optional
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from .dataloader import DataLoader
import contextvars
import uuid
_correlation_id: contextvars.ContextVar[str] = contextvars.ContextVar(
"correlation_id", default="-"
)
import asyncio
import time
from dataclasses import dataclass, field
@dataclass
import asyncio
from collections import defaultdict
from fastapi import WebSocket
import logging
from typing import Awaitable, Callable, List, Tuple
log = logging.getLogger("saga")
Compensation = Callable[[], Awaitable[None]]
import threading
class MinuteRingBuffer:
def __init__(self, window_minutes=15):
if window_minutes < 1:
import asyncio
import uuid
from dataclasses import dataclass, field
from typing import Any, Dict, Optional
import asyncio
from typing import Awaitable, Callable, Dict, TypeVar
T = TypeVar("T")