Я хотел бы передавать данные 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%