Description
Describe your environment
OS: (e.g, Ubuntu)
Python version: (e.g., Python 3.8.10)
Package version: (e.g., 0.46.0)
What happened?
Currently, the "delivery_info" attribute in celery is a string and not a map (or even a json).
The attribute is transformed into a string, which makes it hard to parse, and one has to use regex instead.
Steps to Reproduce
Run the celery instrumentation application from https://github.com/shivanshuraj1333/celery-opentelemetry-instrumentation/
Expected Result
attribute name: celetry.delivery_info
option 1: return a python dict
{
'exchange': '',
'routing_key': 'queue2',
'priority': 0,
'redelivered': False
}
option 2: return a valid json
{
"exchange": "",
"routing_key": "queue2",
"priority": 0,
"redelivered": false
}
A dict is supported by semconv and proto message https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/common/v1/common.proto#L37
Also, the unmarshalling is already supported, see.
So, let's go for having option 1 makes sense, since, it helps in extracting the keys from map values of an attribute
Actual Result
attribute name: celetry.delivery_info
value: {'exchange': '', 'routing_key': 'queue2', 'priority': 0, 'redelivered': False}
Additional context
No response
Would you like to implement a fix?
None