Skip to main content

Build Status

Higher level Datagram support for Asyncio

Simple wrappers that allow you to await read() from datagrams as suggested by Guido van Rossum here. I frequently found myself having to inherit from asyncio.DatagramProtocol and implement this over and over.

Design

The goal of this package is to make implementing common patterns that use datagrams simple and straight-forward while still supporting more esoteric options. This is done by taking an opinionated stance on the API that differs from parts of asyncio. For instance, rather than exposing a function like create_datagram_endpoint which supports many use-cases and has conflicting parameters, asyncio_dgram only provides three functions for creating a stream:

  • connect((host, port)): Creates a datagram endpoint which can only communicate with the endpoint it connected to.
  • bind((host, port)): Creates a datagram endpoint that can communicate with anyone, but must specify the destination address every time it sends.
  • from_socket(sock): If the above two functions are not sufficient, then asyncio_dgram simply lets the caller setup the socket as they see fit.

Example UDP echo client and server

Following the example of asyncio documentation, here's what a UDP echo client and server would look like.

import asyncio

import asyncio_dgram


async def udp_echo_client():
    stream = await asyncio_dgram.connect(("127.0.0.1", 8888))

    await stream.send(b"Hello World!")
    data, remote_addr = await stream.recv()
    print(f"Client received: {data.decode()!r}")

    stream.close()


async def udp_echo_server():
    stream = await asyncio_dgram.bind(("127.0.0.1", 8888))

    print(f"Serving on {stream.sockname}")

    data, remote_addr = await stream.recv()
    print(f"Echoing {data.decode()!r}")
    await stream.send(data, remote_addr)

    await asyncio.sleep(0.5)
    print(f"Shutting down server")


def main():
    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.gather(udp_echo_server(), udp_echo_client()))


if __name__ == "__main__":
    main()

Metadata

Release files for asyncio-dgram 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for asyncio-dgram 3.0.0
File Size Uploaded
asyncio_dgram-3.0.0.tar.gz 26.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for asyncio-dgram 3.0.0
File Interpreter ABI Platform
asyncio_dgram-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.6 kB

Release files / asyncio_dgram-3.0.0.tar.gz

Download URL asyncio_dgram-3.0.0.tar.gz
Size 26.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bd0937807a44451d799573b32400702187fd0bba6136f7cf306e9327c0c20f3e
BLAKE2b-256 checksum
How to use checksums
5792531067e931af346b13cab79ab9be2619b043e54d611f413809e71119e093
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"openSUSE Tumbleweed","version":"20260113","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / asyncio_dgram-3.0.0-py3-none-any.whl

Download URL asyncio_dgram-3.0.0-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4113061e6a7fbeee928d49c56cb61b68ca4a2fbee37f7e97280bbc72323ba8e
BLAKE2b-256 checksum
How to use checksums
afa1ad5d53a50d07b4da934c5ff7db8fc3cfd091660b0f78174499644c72523f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"openSUSE Tumbleweed","version":"20260113","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page