Python BaseHTTPServer поток данных JSON - высокая загрузка ЦП - PullRequest
0 голосов
/ 11 марта 2019

Я хотел бы передавать данные JSON через http.В конечном счете, данные будут поступать с устройства /dev/USB, а сейчас я создаю переменную и высмеиваю простую строку json.Я создаю get endpoin, используя BaseHTTPServer.Когда я пытаюсь получить поток с помощью crul, я получаю данные, но во время получения данных сервер использует процесс 100% ЦП.Почему и как это исправить?Маби, моя идея не так?

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import socket as Socket


class StreamServer(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "application/stream+json")
        self.send_header('Connection', 'keep-alive')
        self.end_headers()

        while True:
            //mock variable, in the future data will come from device
            string = "{ test: 12 }"
            self.end_headers()
            self.wfile.write(string)

def main():
    try:

        StreamServer.ip = "0.0.0.0"
        StreamServer.hostname = Socket.gethostname()
        server = HTTPServer((StreamServer.ip, 7777), StreamServer)
        print("server started on {}".format(Socket.gethostname()))
        server.serve_forever()

    except KeyboardInterrupt:
        print('KeyboardInterrupt')

    server.socket.close()


if __name__ == '__main__':
    main()

РЕДАКТИРОВАТЬ:

Я добавляю функцию сна (0,1666), конец цикла while и ЦП снизились до 75%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...