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 CloudEventtypeevent["payload"]becomes the CloudEvent dataevent["headers"]become CloudEvent attributes/extensionssourcedefaults to/amgi-cloudevents, unless the AMGI headers includesource
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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|