Add your description here
Project description
amgi-cloudevents
CloudEvents HTTP adapter for AMGI applications.
Installation
pip install "amgi-cloudevents[uvicorn]==0.40.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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file amgi_cloudevents-0.40.0.tar.gz.
File metadata
- Download URL: amgi_cloudevents-0.40.0.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e1d96d646b55bc84f8d5739a7d8bafeb057bab0eb7a9e4edd81dcf59b0c7d5c
|
|
| MD5 |
b6e4d59c2412110a58b5ea10c6a268e4
|
|
| BLAKE2b-256 |
93966970f5977ea9865f62f81071a57df60c2692e84df6f4d83e2796950c9bd7
|
File details
Details for the file amgi_cloudevents-0.40.0-py3-none-any.whl.
File metadata
- Download URL: amgi_cloudevents-0.40.0-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ed9406a09200d1ca0fc936ca54018700ce5abdeeb5c6a14862f98ee7e1c345b
|
|
| MD5 |
7d592a351886cce2be92183fc9776a25
|
|
| BLAKE2b-256 |
d8ed697f001aed365cd6c327947549fe7b5c6b0dc470c5d34a0b139cdb530778
|