Работает!!!

This commit is contained in:
2025-09-04 22:53:01 +03:00
parent 36f37ffacb
commit 1bfe3c0cd8
2 changed files with 64 additions and 23 deletions

View File

@@ -5,43 +5,57 @@ import streamlit as st
import asyncio
import threading
import time
import json
import os
from api_client import upload_file_to_api
from config import PARSER_TABS
# Глобальное хранилище задач (в реальном приложении лучше использовать Redis или БД)
TASKS_STORAGE = {}
def upload_file_async_background(endpoint, file_data, filename, task_id):
"""Асинхронная загрузка файла в фоновом режиме"""
global TASKS_STORAGE
try:
# Обновляем статус на "running"
TASKS_STORAGE[task_id] = {
'status': 'running',
'filename': filename,
'endpoint': endpoint,
'started_at': time.time(),
'progress': 0
}
# Имитируем асинхронную работу
time.sleep(1) # Небольшая задержка для демонстрации
# Выполняем загрузку
result, status = upload_file_to_api(endpoint, file_data, filename)
# Сохраняем результат в session_state
if 'upload_tasks' not in st.session_state:
st.session_state.upload_tasks = {}
st.session_state.upload_tasks[task_id] = {
# Сохраняем результат в глобальном хранилище
TASKS_STORAGE[task_id] = {
'status': 'completed' if status == 200 else 'failed',
'result': result,
'status_code': status,
'filename': filename,
'endpoint': endpoint,
'completed_at': time.time()
'started_at': TASKS_STORAGE.get(task_id, {}).get('started_at', time.time()),
'completed_at': time.time(),
'progress': 100
}
except Exception as e:
# Сохраняем ошибку
if 'upload_tasks' not in st.session_state:
st.session_state.upload_tasks = {}
st.session_state.upload_tasks[task_id] = {
TASKS_STORAGE[task_id] = {
'status': 'failed',
'error': str(e),
'filename': filename,
'endpoint': endpoint,
'completed_at': time.time()
'started_at': TASKS_STORAGE.get(task_id, {}).get('started_at', time.time()),
'completed_at': time.time(),
'progress': 0
}