0
import faust

app = faust.App('demo-streaming', broker='localhost:9092')

class Greeting(faust.Record, serializer='json'):
    source_id: str
    source_name: str
    author: str
    title: str
    description: str
    url: str
    urlToImage: str
    publishedAt: str
    content: str


input_topic = app.topic('economy', value_type=Greeting)
aged_table = app.Table("major-count", key_type=str, value_type=str, partitions=1, default=int)


@app.agent(input_topic)
async def processor(stream):
    async for message in stream:
        print(message.title)

My json

{ "source": { "id": null, "name": "CNN" }, "author": "dsfse", "title": "dsfsfd", "description": "Isdfsdf.", "url": "sdf", "urlToImage": "fds", "publishedAt": "2021-02-19T20:26:51Z", "content": null }

Error:

[2023-02-22 06:21:58,435] [69985] [ERROR] [^----Agent*: streamTopic.processor]: Crashed reason=ValueDecodeError('streamTopic.Greeting() argument after ** must be a mapping, not list') 
Traceback (most recent call last):
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/registry.py", line 101, in loads_value
    return cast(V, self._prepare_payload(typ, payload))
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/registry.py", line 123, in _prepare_payload
    return model.from_data(value, preferred_type=model)
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/models/record.py", line 309, in from_data
    return (self_cls or cls)(**data, __strict__=False)
TypeError: streamTopic.Greeting() argument after ** must be a mapping, not list

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/agents/agent.py", line 674, in _execute_actor
    await coro
  File "/home/mario/Documents/kafka_project/StreamProcessing/streamTopic.py", line 28, in processor
    async for message in stream:
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/streams.py", line 1061, in _c_aiter
    value, sensor_state = await it.next()  # noqa: B305
  File "faust/_cython/streams.pyx", line 90, in next
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/channels.py", line 529, in __anext__
    return await self.queue.get()
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/mode/utils/queues.py", line 214, in get
    return await super().get()
  File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/mode/utils/queues.py", line 176, in get
    return cast(_T, await super().get())
  File "/usr/lib/python3.10/asyncio/queues.py", line 159, in get
    await getter
  File "faust/transport/_cython/conductor.pyx", line 73, in faust.transport._cython.conductor.ConductorHandler.__call__
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/schemas.py", line 183, in decode
v: V = schema_loads_value(app, message, loads=loads_value)
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/schemas.py", line 105, in loads_value
return loads(
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/registry.py", line 105, in loads_value
raise ValueDecodeError(str(exc)).with_traceback(sys.exc_info()[2]) from exc
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/registry.py", line 101, in loads_value
return cast(V, self._prepare_payload(typ, payload))
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/serializers/registry.py", line 123, in _prepare_payload
return model.from_data(value, preferred_type=model)
File "/home/mario/Documents/kafka_project/StreamProcessing/venv/lib/python3.10/site-packages/faust/models/record.py", line 309, in from_data
return (self_cls or cls)(**data, __strict__=False)
faust.exceptions.ValueDecodeError: streamTopic.Greeting() argument after ** must be a mapping, not list
[2023-02-22 06:21:58,437] [69985] [INFO] [^----OneForOneSupervisor: (1@0x7fea094efc10)]: Restarting dead <Agent*: streamTopic.processor>! Last crash reason: ValueDecodeError('streamTopic.Greeting() argument after ** must be a mapping, not list') 
NoneType: None
[2023-02-22 06:21:58,440] [69985] [ERROR] [^----Agent*: streamTopic.processor]: Crashed reason=ValueDecodeError('streamTopic.Greeting() argument after ** must be a mapping, not list') 
Robert
  • 7,394
  • 40
  • 45
  • 64
Mario
  • 21
  • 3

0 Answers0