-
Notifications
You must be signed in to change notification settings - Fork 778
Open
Labels
Milestone
Description
Describe the issue
Example for outbox in python seems to be errored. It assumes we can, via python SDK, do:
await client.state.transaction(DAPR_STORE_NAME, ops);but:
== APP == c.state.save(
== APP == AttributeError: 'DaprClient' object has no attribute 'state'Indeed python SDK does not provide this state attribute.
So I tried:
c.save_state(
store_name=DAPR_STORE_NAME,
key="test",
value='{ "say": "hello world from outbox-metadata" }',
state_metadata={ "outbox.projection": "true" },
metadata=(("outbox.projection", "true"),)
)But despite my efforts in injecting metadatas, I could not see any outbox message in my outbox topic.
Only way I found to get a message in outbox topic is to use transactions:
transaction_operation = TransactionalStateOperation(
operation_type=TransactionOperationType.upsert,
key="1",
data='{ "say": "hello world from outbox transaction" }',
)
c.execute_state_transaction(
store_name=DAPR_STORE_NAME,
operations=[transaction_operation],
transactional_metadata={ 'datacontenttype': 'application/json'},
metadata= (('datacontenttype', 'application/json'),)
)I made this project where you can find full code and logs: https://github.com/jseguillon/dapr-outbox-python
URL of the docs
Expected content
A working Python example for outbox with metadata like example for others langages
Screenshots
metadata:
transaction:
Additional context

