The pyh2o module provides Python binding for the H2O HTTP server. Specifically, it provides high performance HTTP 1/2 and websocket server for Python.
pip install pyh2o
If binary distribution for your platform is not provided, you will need cmake>=2.8.11 to install.
Clone the repository, initialize submodules by git submodule update --init --recursive
.
- Build:
python setup.py build
- Test:
python setup.py test
- Clean:
python setup.py clean
End to end test brings up a real server and make requests to it.
Below is an example of serving static content.
import h2o
import socket
class Handler(h2o.Handler):
def on_req(self):
self.res_status = 200
self.send_inline(b'Hello, world!')
return 0
config = h2o.Config()
host = config.add_host(b'default', 65535)
host.add_path(b'/plaintext').add_handler(Handler)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
sock.bind(('127.0.0.1', 8888))
sock.listen(0)
loop = h2o.Loop()
loop.start_accept(sock.fileno(), config)
while loop.run() == 0:
pass