{"body":"import socket\nimport ssl, time\nfrom select import select\nfrom cffi import FFI\n\nffi = FFI()\n\n# SET VARIABLES\npacket = [\"GET https://baroquesoftware.com/index.html HTTP/1.1\", \"Host: www.baroquesoftware.com\", \"Connection: Keep-Alive\", \"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\", \"\"]\npacket = \"\\r\\n\".join(packet) + \"\\r\\n\"\nHOST, PORT = 'vrsketch.eu', 443\n#HOST, PORT = 'google.com', 443\ntotal = []\n\ncontext = ssl.create_default_context()\n\nglob_buf = ffi.buffer(ffi.new(\"char[8192]\"), 8192)\n\nclass SocketIO(object):\n    def __init__(self, sock):\n        self._s = sock\n        self._buf = glob_buf # ffi.buffer(ffi.new(\"char[8192]\"), 8192)\n        self._cache = []\n\n    def readline(self):\n        if self._cache:\n            return self._cache.pop()\n        try:\n            self._s.recv_into(self._buf, 8192)\n        except Exception as e:\n            if \"UNEXPECTED_EOF\" in str(e):\n                self._cache = [b'']\n                return b''\n            raise\n        self._cache.extend(bytes(self._buf).split(b\"\\n\"))\n        self._cache.reverse()\n\ndef makefile(sock, mode):\n    #return sock.makefile(mode)\n    assert mode == \"rb\"\n    return SocketIO(sock)\n\nsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\nwrappedSocket = context.wrap_socket(sock, server_hostname=HOST)\nwrappedSocket.setblocking(0)\nconn = wrappedSocket.connect_ex((HOST, PORT))\nfp = makefile(wrappedSocket, \"rb\")\n\ndef send_all(sock, v):\n    cur = 0\n    while True:\n        a, b, c = select([], [sock.fileno()], [])\n        try:\n            cur += sock.send(v[cur:])\n        except Exception as e:\n            if isinstance(e, OSError) and e.errno == 2:\n                continue\n            else:\n                raise\n        if cur == len(v):\n            break\n\n\nxx = [None]\nCOUNT = 10000\nfor k in range(300):\n    # CREATE SOCKET\n    t0 = time.process_time()\n    for i in range(COUNT):\n\n        # WRAP SOCKET\n        #wrappedSocket = sock\n\n        # CONNECT AND PRINT REPLY\n        while True:\n            try:\n                send_all(wrappedSocket, packet.encode(\"utf8\"))\n            except Exception as e:\n                # reconnect?\n                #print(\"reconnecting (%s)\" % str(e))\n                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n                wrappedSocket = context.wrap_socket(sock, server_hostname=HOST)\n                wrappedSocket.setblocking(0)\n                conn = wrappedSocket.connect_ex((HOST, PORT))\n                fp = makefile(wrappedSocket, \"rb\")\n            else:\n                break\n            \n        #print(packet)\n        while True:\n            try:\n                line = fp.readline()\n                if line == b'\\t</body>\\n':\n                    break\n            except OSError as e:\n                if e.errno == 2:\n                    continue\n                raise\n            if not line:\n                break\n        #l = []\n        #while True:\n        #    a, b, c = select([wrappedSocket.fileno()], [], [], 0.0)\n        #    if not a:\n        #        break\n        #    r = wrappedSocket.recv(8192)\n        #    if not r:\n        #        break\n        #    l.append(r.decode(\"utf8\"))\n        ##print(\"\".join(l))\n        #xx[0] = \"\".join(l).split(\"\\n\")\n\n        # CLOSE SOCKET CONNECTION\n    t1 = time.process_time()\n    total.append(t1 - t0)\n    print(\"%.3f %d req/s\" % (t1 - t0, COUNT/(t1 - t0)))\nwrappedSocket.close()\nprint(\"Average: %.3f\" % (sum(total)/len(total)))\nprint(\"Average skipping 10: %.3f\" % (sum(total[10:])/len(total[10:])))","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/PeAzlswb","modified":1643194266,"id":"PeAzlswb","size":3519,"lines":119,"own_paste":false,"theme":"","date":1643194266}