Bulk publish: per-message metadata in publish_events
@nelson-parente ci sta già lavorando.
Dal 23/9/2026.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 76/100
Direzione di ricerca
Start in dapr/clients/grpc/client.py#L544 and dapr/aio/clients/grpc/client.py#L493, where publish_events builds BulkPublishRequestEntry values from entry_id, event, and content_type. Add support for BulkPublishEntry metadata while preserving bytes and str entries, and ensure publish_metadata is copied to every entry; done means per-message metadata and request-level metadata reach bulk publish envelopes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the feature
publish_events does not populate BulkPublishRequestEntry.metadata, so per-message metadata (partition key, session id, Kafka key) cannot be set. Entries are built from entry_id, event and content_type only, in both dapr/clients/grpc/client.py#L544 and dapr/aio/clients/grpc/client.py#L493.
The runtime supports it, and go-sdk (PublishEventsEvent.Metadata), java-sdk (BulkPublishEntry) and js-sdk (PubSubBulkPublishMessage.metadata) all expose it. Same request against dotnet-sdk in dapr/dotnet-sdk#1198.
Side effect: the runtime only merges request-level metadata into entries that already have metadata, so publish_metadata never reaches the envelope either. On 1.18.4 with ttlInSeconds, publish_event sets expiration on the cloudevent and publish_events does not.
Proposed API, mirroring go-sdk:
d.publish_events(
pubsub_name='pubsub',
topic_name='TOPIC_A',
data=[
BulkPublishEntry(event='{"n": 1}', metadata={'partitionKey': 'tenant-a'}),
BulkPublishEntry(event='{"n": 2}', metadata={'partitionKey': 'tenant-b'}),
'{"n": 3}',
],
)
Existing bytes/str entries keep working, and publish_metadata should be copied onto every entry.
Release Note
RELEASE NOTE: ADD Per-message metadata support in publish_events bulk publish.
- Lingua principale
- Python
- Stelle
- 272
- Fork
- 152
- Merge medio
- 3g 21h
- PR unite (30g)
- 5
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dapr/python-sdk
-
dapr-ext-workflow good first issue kind/enhancement P2
Difficoltà 2/5 1-2 giorni Idoneità per principianti 72/100
dapr/python-sdk#853 · 4 commenti ·
-
kind/bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
dapr/python-sdk#1230 ·
-
dapr-ext-workflow kind/enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
dapr/python-sdk#1213 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 76/100
dapr/python-sdk#1200 ·
-
dapr-ext-workflow kind/enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
dapr/python-sdk#1188 ·
Tutte le issue di dapr/python-sdk
Issue simili
-
area: harness bug status: needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Human-Agent-Society/reef#625 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
learningequality/kolibri#15351 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Name consistency Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eellak/triplestore#65 · 1 commento ·