Skip to main content

amgi-cloudevents

CloudEvents HTTP adapter for AMGI applications.

Installation

pip install "amgi-cloudevents[uvicorn]==0.49.0"

Receiving CloudEvents

from amgi_cloudevents import run
from asyncfast import AsyncFast

app = AsyncFast()


@app.channel("com.example.event")
async def handle_event(payload: bytes) -> None: ...


if __name__ == "__main__":
    run(app, host="0.0.0.0", port=8000)

You can also run an app through the AsyncFast CLI entry point:

asyncfast run amgi-cloudevents-uvicorn main:app --host 0.0.0.0 --port 8000

If the app sends follow-up messages, provide an outbound CloudEvents endpoint:

asyncfast run amgi-cloudevents-uvicorn main:app \
  --message-send-endpoint https://example.com/events \
  --message-send-source /orders \
  --message-send-content-mode binary

Server accepts binary or structured CloudEvents on POST /event by default. CloudEvent attributes and extensions are exposed as AMGI headers. For example, ce-id: event-1 becomes (b"id", b"event-1").

AMGI message.ack returns 204 No Content. AMGI message.nack returns 500 with the nack message as the response body. Invalid CloudEvents return 400.

Sending CloudEvents

from amgi_cloudevents import MessageSend
from amgi_cloudevents import Server

message_send = MessageSend(
    "https://example.com/events",
    source="/orders",
    content_mode="binary",
)
server = Server(app, message_send=message_send)

MessageSend maps AMGI message.send events to CloudEvents:

  • event["address"] becomes the CloudEvent type
  • event["payload"] becomes the CloudEvent data
  • event["headers"] become CloudEvent attributes/extensions
  • source defaults to /amgi-cloudevents, unless the AMGI headers include source

content_mode can be "structured" or "binary". Structured mode is the default.

If Server receives an AMGI message.send event without a configured message_send, it raises an error explaining that outbound sending must be wired explicitly.

Metadata

Release files for amgi-cloudevents 0.49.0

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

Built distribution (wheel)

Table of built distributions (wheels) for amgi-cloudevents 0.49.0
File Interpreter ABI Platform
amgi_cloudevents-0.49.0-py3-none-any.whl Python 3 none any Details

Release files / amgi_cloudevents-0.49.0-py3-none-any.whl

Download URL amgi_cloudevents-0.49.0-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3062e95061464b3675ff837b78ae429e062ff3725d76b5aa1edd39bd4acaf284
BLAKE2b-256 checksum
How to use checksums
2332c2e6fc4425d6cdef506011c1f335b8bbdaedcfc440cdbc9f6c9ab7c8c9e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.49.0 This release

1 release file

0.48.0

1 release file

0.47.0

2 release files

0.46.0

2 release files

0.44.0

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.41.1

2 release files

0.41.0

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