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.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

aiohttp_asgi_connector-1.0.1-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiohttp_asgi_connector-1.0.1.tar.gz
  • Upload date:
  • Size: 5.9 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.1.tar.gz
Algorithm Hash digest
SHA256 8bc33bac93561fa3abd8a32ddc5a648baa567525d2790c6042eb604ce5d1ab82
MD5 3939a794abdb1624848badc01f9b739c
BLAKE2b-256 7cda57b2d0232e6a8842af786ed0df41a25ffd6ae224d21301bc8053226d0f84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp_asgi_connector-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 be9b44c7ecf4dda2aa97c75ffc82f2660e603972d9a3a5cf733f1ce85a73f2e8
MD5 23b9294d8e62ab420dbf0bed99a9f0a7
BLAKE2b-256 60e9517f5a0434faf2c53c01270c72a22497dbb7060560dbe177d5fd18cba058

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