Skip to main content

AIOHTTP Connector for running ASGI applications

Project description

aiohttp-asgi-connector

GitHub Workflow Status PyPI - Downloads GitHub

AIOHTTP Connector for running ASGI applications.

This library intends to increase the parity between AIOHTTP and HTTPX, specifically with HTTPX's AsyncClient. It is primarily intended to be used in test suite scenarios, or other situations where one would want to interface with an ASGI application directly instead of through a web server.

Supports Python 3.8+ and AIOHTTP 3+.

Installation

$ pdm add aiohttp-asgi-connector
# or
$ python -m pip install --user aiohttp-asgi-connector

Usage

This library replaces the entire connection stack and pool underlying HTTP transport. AIOHTTP exposes custom connectors via the connector argument supplied when creating a ClientSession instance.

To use the ASGIApplicationConnector:

import asyncio
from typing import Annotated  # or from typing_extensions

from aiohttp_asgi_connector import ASGIApplicationConnector
from aiohttp import ClientSession
from fastapi import FastAPI, Body

app = FastAPI()

@app.post("/ping")
async def pong(message: Annotated[str, Body(embed=True)]):
    return {"broadcast": f"Application says '{message}'!"}

async def main():
    connector = ASGIApplicationConnector(app)
    async with ClientSession(base_url="http://localhost", connector=connector) as session:
        async with session.post("/ping", json={"message": "hello"}) as resp:
            print(await resp.json())
            # ==> {'broadcast': "Application says 'hello'!"}

asyncio.run(main())

Exceptions raised within the ASGI application that are not handled by the application, like HTTPException in FastAPI for example, are propagated.

This library does not handle ASGI lifespan events. If you want to run those events, use this library in conjunction with something like asgi-lifespan.

License

This software is licensed under the BSD 3-Clause License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiohttp_asgi_connector-1.0.2.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

aiohttp_asgi_connector-1.0.2-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file aiohttp_asgi_connector-1.0.2.tar.gz.

File metadata

  • Download URL: aiohttp_asgi_connector-1.0.2.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.16.1 CPython/3.12.4 Windows/10

File hashes

Hashes for aiohttp_asgi_connector-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3d1bea0382a8b0867a3f307b236d6049d0b54c56c406b85211873f30afb0c306
MD5 453013a59aa77e549ab2e6ec2c37e2e5
BLAKE2b-256 1c9238c93781b95055a4b80618ea2a7b18f83bf0c1033bc26557cc355ecf181d

See more details on using hashes here.

File details

Details for the file aiohttp_asgi_connector-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohttp_asgi_connector-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5c5878eb829391be2b4a4ab88e21c57f59c42f61ed7a601d49856250e80697d9
MD5 0a071c1037823560b415313cac40d88c
BLAKE2b-256 e5fa30171e3229b0f4b4ae557414caea5ca7c07183bfb8efb83759b36b093e52

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page