Как ограничить время выполнения задачи в python?
У меня есть сервер на котором установлен 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 запросов.
Буду благодарен за помощь. Я в питон новичок, прошу не ругать сильно :)