#server

Пользователь

от berilloda , в категории: Python , 2 месяца назад
1 ответ последнее сообщение 2 месяца назад от jaren

Всем привет, я написал простой сервер на Flask, и он получает на вход аудиофайл, id и имя файла и должен запускать программу, которая транскрибирует аудиофайл в текст.

Но когда на сервер прилетает несколько запросов мой ПК виснет из-за большой нагрузки. Получается что сервер на каждый файл (из нового запроса), запускает мою программу по транскрибации.

Может кто знает, как настроить очередь на обработку файлов.


У меня на сервер может за один запрос прилетать сразу несколько файлов и тогда они корректно становятся в очередь, а если прилетает несколько запросов, то ПК сразу виснет.

Сервер установлен на windows 10.


Код сервера выглядит следующим образом:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from flask import Flask, request, jsonify, send_file
import os
import subprocess
import time
import threading

app = Flask(__name__)

directory = os.path.dirname(os.path.abspath(__file__))
directory = directory.replace('\\', '/')

def delete_file(file_path):
    time.sleep(300)  # 5 минут ожидания
    os.remove(file_path)

@app.route('/api/process_audio', methods=['POST'])
def process_audio():
    try:
        start_time = time.time()

        # Получаем данные
        audio_file = request.files['audio']
        audio_id = request.form['audio_id']
        audio_name = request.form['audio_name']

        # Сохраняем аудио
        audio_path = os.path.join('program_audio/audio', f'{audio_name}.mp3')
        audio_file.save(audio_path)

        # Запуск обработки аудио
        subprocess.run('starter.bat', shell=True)

        # Ждем результата
        text_file_path = os.path.join('program_audio/final_text', f'{audio_name}_final.txt')
        timeout = time.time() + 60
        while not os.path.exists(text_file_path):
            if time.time() > timeout:
                return jsonify({'error': 'Timeout'}), 500
            time.sleep(1)

        # Формируем ответ
        end_time = time.time()
        elapsed_time = end_time - start_time

        response_data = {
            'audio_id': audio_id,
            'elapsed_time': elapsed_time
        }

        # Отправляем результат
        response = send_file(text_file_path, as_attachment=True)
        
        # Запускаем удаление файла через 5 минут
        delete_thread = threading.Thread(target=delete_file, args=(text_file_path,))
        delete_thread.start()

        return response, response_data

    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True, port=39588, host='0.0.0.0')

Пользователь

от krista , в категории: Другие , 4 месяца назад
1 ответ последнее сообщение 4 месяца назад от hobart.rath

Как объединить vpn server + socks proxy?

Пользователь

от velma , в категории: PHP , год назад
2 ответа последнее сообщение 4 месяца назад от abel

Как использовать microsoft sql server в laravel 5?

Пользователь

от hermina.hauck , в категории: SQL , год назад
2 ответа последнее сообщение 4 месяца назад от jakayla

Как удалить логи в sql server 2008?

Пользователь

от quinton.prosacco , в категории: Другие , год назад
2 ответа последнее сообщение 4 месяца назад от bart

Как запустить selenium server (rc) через jenkins на виртуальной машине?

Пользователь

от nikko , в категории: Другие , год назад
2 ответа последнее сообщение 5 месяцев назад от jorge

Как зайти в mysql server в docker container?

Пользователь

от jerrold_langworth , в категории: Другие , 6 месяцев назад
1 ответ последнее сообщение 6 месяцев назад от margaret

Как сделать https сервер на ubuntu server?

Пользователь

от deion , в категории: Другие , 6 месяцев назад
1 ответ последнее сообщение 6 месяцев назад от ella

Как лучше установить приложение в автозагрузку на ubuntu server?

Пользователь

от richie_mayert , в категории: Другие , год назад
2 ответа последнее сообщение 6 месяцев назад от vladimir

Как посмотреть логи в zabbix server?

Пользователь

от willis.streich , в категории: Другие , год назад
2 ответа последнее сообщение 6 месяцев назад от adrien.waters

Как установить zabbix server на windows 10?

Пользователь

от cooper.berge , в категории: Другие , год назад
2 ответа последнее сообщение 6 месяцев назад от caterina

Как установить zabbix на windows server?

Пользователь

от richard , в категории: Другие , 7 месяцев назад
1 ответ последнее сообщение 7 месяцев назад от urban_will

Как интегрировать приложение написанное на java с windows server?

Пользователь

от greyson , в категории: SQL , 7 месяцев назад
1 ответ последнее сообщение 7 месяцев назад от stephania

Как удалить триггер на sql server?

Пользователь

от montana_hand , в категории: PHP , 9 месяцев назад
1 ответ последнее сообщение 9 месяцев назад от akeem

Как выводить данные из хранимой процедуры sql server в php?

Пользователь

от wilburn , в категории: Другие , 10 месяцев назад
1 ответ последнее сообщение 10 месяцев назад от stephania

Как перезапустить Apache HTTP Server?