Работает!!!
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user