Добавлю и свои 5 копеек. sudo su — это оверхэд. Чтобы посидеть под рутом достаточно либо просто sudo -l, либо su. Но второй вариант требует, чтобы у суперпользователя был задан пароль (su его спросит), то есть под Ubuntu по умолчанию не прокатит.
Илья: спасибище! Даже с кодом! :-) Точно, сам я не догадался запихнуть Flask в отдельный поток, я пытался внутри него что-то вертеть. Скорее, внутри у него не sleep, а ожидание соединения на сокете.
А разве я не могу, допустим, создать потомка от Flask и переписать ему __init__, где буду вызывать родительский __init__, после чего своему классу создавать поле с экземпляром класса Thread?
Во-первых, есть академический интерес. Задача не срочная и есть время позаморачиваться. Во-вторых, использование тредов позволит намного упростить разворачивание-сворачивание мониторинга на произвольно взятой машине.
Александр N++: не может делать ничего почему? Нет прав на запись в папку или не назначена оболочка? Если есть root доступ, и то, и другое можно исправить.
DevMan: но ведь «a body, if any, has no semantic meaning to the request» же! То есть, если сервер использует тело GET запроса, то он нарушает спецификацию. Более того, «The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI» (это уже RFC 2616, в 1945 формулировка была той же), то есть URL должен однозначно идентифицировать сущность. То есть, Elastic нагло и бесцеремонно нарушает RFC.
DevMan: можете привести пример такого API? По-моему, это нарушает логику работы HTTP. Хотя бы потому, что GET запрос должен быть имдепотентным, а передача серверу объекта подразумевает какую-то обработку переданного объекта, то есть она несовместима с имдепотентностью.
Вообще метод GET не подразумевает передачи тела, только заголовки. То есть если какое-то кривое API требует нарушить спецификацию, то остаётся только обращаться к нему ручками через сокет.
Ну, или API не кривое, просто Вы его неверно поняли.
И, кстати, заголовок Content-Type в запросе и ответе имеет разное значение. В случае запроса это тип данных, который клиент ожидает получить, а в случае ответа — который он в действительности получит.