- копирую модуль upload/ из drhider (слои 1-2) - blueprint: параметр sink (drhider-сессия по умолчанию, сверка — DB+парсинг) - upload_bp: contracts_upload_sink = _store_and_parse - routes: регистрирую create_upload_refs_blueprint(cfg, sink=...) - app.py: корень репо в sys.path (для import upload) - History: план переиспользования + ревью Соннета
28 lines
865 B
Python
28 lines
865 B
Python
"""request_cancel / get_cancel_event — мягкое прерывание обработки сессии."""
|
|
|
|
import threading
|
|
from typing import Optional
|
|
|
|
from .state import _sessions, _lock
|
|
|
|
|
|
def request_cancel(sid: str) -> bool:
|
|
"""Запросить мягкое прерывание обработки сессии.
|
|
|
|
Returns:
|
|
True если сессия существует и отмена запрошена, False если нет.
|
|
"""
|
|
with _lock:
|
|
s = _sessions.get(sid)
|
|
if not s:
|
|
return False
|
|
s["cancel"].set()
|
|
return True
|
|
|
|
|
|
def get_cancel_event(sid: str) -> Optional[threading.Event]:
|
|
"""Получить событие отмены сессии (или None, если сессии нет)."""
|
|
with _lock:
|
|
s = _sessions.get(sid)
|
|
return s["cancel"] if s else None
|