Возврат вывода subprocess.popen() в веб-сервере
У меня есть веб-сервер на Python с использованием Django. Я хочу иметь возможность запускать длительный асинхронный подпроцесс, чтобы клиент опрашивал его с помощью GET или POST и получал stdout, а также другую информацию. На каждой итерации сервер будет возвращать строки stdout, которые у него есть на данный момент. Когда процесс завершится, будет возвращена дополнительная информация. Как сохранить экземпляр cmd=subprocess.popen(), чтобы при последующих GET/POST он мог выполнять соответствующие вызовы (например, cmd.poll, cmd.stdout.readline() и т. д.)
Я пробовал использовать менеджер сессий Django, но объект popen не является Json-сериализуемым
Изначально я хотел использовать сессию или что-то подобное, потому что у меня не было ничего другого, что должно быть в базе данных, и я думал, что смогу обойтись без этого. Но поскольку вы не можете добавлять в request.session
вне рамок запроса, я понял, что единственным решением было хранить строки stdout
в базе данных.