Как ограничить время выполнения задачи в python?

Рейтинг: 1Ответов: 0Опубликовано: 03.03.2023

У меня есть сервер на котором установлен python 3, Flask, там же установлено python приложение, которое из ssh запускается командой

myapp arg1 arg2

и после выполнения отдает json

Мне нужно делать GET запрос к этому серверу и получать результат, для этого я установил Flask

И с других серверов я делаю cURL запрос на сервер с питон-приложением, таймаут cURL запроса у меня 30 сек. Бывает так что за 30 сек я не получаю ответ, потому что на сервер пришло слишком много запросов, и он ничего не возвращает, и уже cURL соединение закрывается, а питон-приложение все равно продолжает работу и потребляет оперативную память.

вот код моего server.py

from flask import Flask, jsonify
import subprocess

@app.route("/get/<arg1>")
def get_json(arg1):
    result = subprocess.run(['myapp', 'test', arg1], stdout=subprocess.PIPE)
    return result

то есть когда приходит GET скрипт запускает subprocess.run* с приложением, и ждем его выполнения и возвращает результат.

я хотел бы сделать, чтобы если за 30 сек. не получили результат, то чтобы субпроцесс завершился принудительно. но именно тот субпроцесс который запущен текущим GET запросом, а не все суброцессы убить, потому что одновременно на сервер может приходить несколько GET запросов.

Буду благодарен за помощь. Я в питон новичок, прошу не ругать сильно :)

Ответы

Ответов пока нет.