Durante las pruebas comparativas, noté que las solicitudes secuenciales XHR HTTP entre JavaScript y Python Flask son bastante lentas en Windows, con un factor 10 menos de lo que esperaba: solo ~ 80 MB/seg entre un servidor Python Flask y Chrome en la misma computadora ( servidor local). Tengo una CPU i5 bastante estándar.
¿Hay algún cuello de botella obvio o un mal uso obvio de la API en el siguiente código que hace que las solicitudes XHR HTTP se limiten a menos de 100 MB/seg en una computadora promedio?
import time, flask, numpy as np app = flask.Flask("Test") i, b, t0 = 0, 0, time.time() x = np.random.rand(1000,1000).tobytes() # fixed bytes to avoid measuring the random generation time # 7.6 MB @app.route('/data') def data(): global i, b i += 1 b += len(x) if i % 10 == 0: print("%.1f MB, %.1f MB/sec" % (b / 2**20, b / 2**20 / (time.time()-t0))) return x @app.route('/') def index(): return """ <html><head></head><body><script> function getdata() { req = new XMLHttpRequest(); req.open("GET", "/data", true); req.responseType = "arraybuffer"; req.onload = function (oEvent) { var arrayBuffer = req.response; if (arrayBuffer) { // var byteArray = new Uint8Array(arrayBuffer); getdata(); // sequential: new request only when the previous data has arrived } }; req.send(null); } getdata(); </script></body></html> """ app.run()
(Ejecute el script, vaya a http://127.0.0.1:5000/ y verifique el registro de Python).