pynghttp2 0.3.2

Creator: bradpython12

Last updated:

Add to Cart

Description:

pynghttp2 0.3.2

pynghttp2 are simple asyncio Python bindings based on ctypes for the nghttp2
library. The only thing you need is a libnghttp2 version on your system.
On Debian-based systems you can install nghttp2 simply via apt:
apt-get install libnghttp2-14
The project was created in the context of a student work for an HTTP/2 protocol
gateway in the µPCN project - an implementation of Delay-tolerant Networking
(DTN) protocols.

Installation
pip install pynghttp2


Examples

High-Level API
from pynghttp2 import http2

# GET request
resp = await http2.get('http://localhost:64602/ping')

content = await resp.text()
assert content == 'pong'

# POST request
message = b"Lorem ipsum dolorem"
resp = await http2.post('http://localhost:64602/echo', data=message)
echo = await resp.read()
assert echo == message


Client Session
from pynghttp2 import ClientSession

# Multiplex two requests
async with ClientSession(host='localhost', port=64602) as session:
stream1 = session.get('http://localhost:64602/stream')
stream2 = session.get('http://localhost:64602/stream')

await asyncio.gather(stream1.read(), stream2.read())


Server Session
import asyncio
from pynghttp2 import ServerSession

async def handle_request(req):
"""Echo the request body"""
msg = await req.read()
await req.response(200, data=msg)

with ServerSession(host='localhost', port=8080) as session:
while True:
# Wait for next incoming request
req = await session

# Handle each request in its own task to be able to multiplex
# multiple requests and responses
asyncio.ensure_future(handle_request(req))

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.