Skip to content

[Bug]: got "AttributeError: 'Queue' object has no attribute 'shutdown'" when running examples/helloworld and examples/langgraph #46

@chenx-07

Description

@chenx-07

What happened?

python 3.12
I tried examples/helloworld, I ran 'python __main.py' for server and then I ran client. and I got this error in server.
Same for examples/langgraph

Relevant log output

(.venv) D:\project\a2a_google\a2a-python\examples\helloworld>python __main__.py
�[32mINFO�[0m:     Started server process [�[36m33832�[0m]
�[32mINFO�[0m:     Waiting for application startup.
�[32mINFO�[0m:     Application startup complete.
�[32mINFO�[0m:     Uvicorn running on �[1mhttp://0.0.0.0:9999�[0m (Press CTRL+C to quit)
�[32mINFO�[0m:     127.0.0.1:49154 - "�[1mGET /.well-known/agent.json HTTP/1.1�[0m" �[32m200 OK�[0m
Unhandled exception: 'Queue' object has no attribute 'shutdown'
Traceback (most recent call last):
  File "D:\project\a2a_google\a2a-python\src\a2a\server\apps\starlette_app.py", line 118, in _handle_requests
    return await self._process_non_streaming_request(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\apps\starlette_app.py", line 178, in _process_non_streaming_request
    handler_result = await self.handler.on_message_send(request_obj)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    result = await func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\jsonrpc_handler.py", line 69, in on_message_send
    task_or_message = await self.request_handler.on_message_send(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    result = await func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 181, in on_message_send
    await self._cleanup_producer(producer_task, task_id)
  File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    result = await func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 269, in _cleanup_producer
    await producer_task
  File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    result = await func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 115, in _run_event_stream
    queue.close()
  File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 192, in sync_wrapper
    result = func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
  File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_queue.py", line 71, in close
    self.queue.shutdown()
    ^^^^^^^^^^^^^^^^^^^
AttributeError: 'Queue' object has no attribute 'shutdown'
Request Error (ID: e5ebf098-21c8-455b-9914-412d651f846a: Code=-32603, Message=''Queue' object has no attribute 'shutdown''
�[32mINFO�[0m:     127.0.0.1:49154 - "�[1mPOST / HTTP/1.1�[0m" �[32m200 OK�[0m
Task exception was never retrieved
future: <Task finished name='Task-9' coro=<<async_generator_athrow without __name__>()> exception=AttributeError("module 'asyncio' has no attribute 'QueueShutDown'")>
Traceback (most recent call last):
  File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_consumer.py", line 66, in consume_all
    yield event
GeneratorExit

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_consumer.py", line 93, in consume_all
    except asyncio.QueueShutDown:
           ^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'asyncio' has no attribute 'QueueShutDown'
�[32mINFO�[0m:     127.0.0.1:49154 - "�[1mPOST / HTTP/1.1�[0m" �[32m200 OK�[0m
�[31mERROR�[0m:    Exception in ASGI application
  + Exception Group Traceback (most recent call last):
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi
  |     result = await app(  # type: ignore[func-returns-value]
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__
  |     return await self.app(scope, receive, send)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\applications.py", line 112, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\middleware\errors.py", line 187, in __call__
  |     raise exc
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__
  |     await self.app(scope, receive, _send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__
  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
  |     raise exc
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\routing.py", line 714, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\routing.py", line 734, in app
  |     await route.handle(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\routing.py", line 288, in handle
  |     await self.app(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\routing.py", line 76, in app
  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
  |     raise exc
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\starlette\routing.py", line 74, in app
  |     await response(scope, receive, send)
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\sse_starlette\sse.py", line 237, in __call__
  |     async with anyio.create_task_group() as task_group:
  |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 772, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_consumer.py", line 88, in consume_all
    |     self.queue.close()
    |   File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 192, in sync_wrapper
    |     result = func(*args, **kwargs)
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_queue.py", line 71, in close
    |     self.queue.shutdown()
    |     ^^^^^^^^^^^^^^^^^^^
    | AttributeError: 'Queue' object has no attribute 'shutdown'
    |
    | During handling of the above exception, another exception occurred:
    |
    | Traceback (most recent call last):
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 234, in on_message_send_stream
    |     async for event in result_aggregator.consume_and_emit(consumer):
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\tasks\result_aggregator.py", line 41, in consume_and_emit
    |     async for event in consumer.consume_all():
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_consumer.py", line 93, in consume_all
    |     except asyncio.QueueShutDown:
    |            ^^^^^^^^^^^^^^^^^^^^^
    | AttributeError: module 'asyncio' has no attribute 'QueueShutDown'
    |
    | During handling of the above exception, another exception occurred:
    |
    | Traceback (most recent call last):
    |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\sse_starlette\sse.py", line 240, in cancel_on_finish
    |     await coro()
    |   File "D:\project\a2a_google\a2a-python\.venv\Lib\site-packages\sse_starlette\sse.py", line 159, in _stream_response
    |     async for data in self.body_iterator:
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\apps\starlette_app.py", line 232, in event_generator
    |     async for item in stream:
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\jsonrpc_handler.py", line 95, in on_message_send_stream
    |     async for event in self.request_handler.on_message_send_stream(
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 262, in on_message_send_stream
    |     await self._cleanup_producer(producer_task, task_id)
    |   File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    |     result = await func(*args, **kwargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 269, in _cleanup_producer
    |     await producer_task
    |   File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 158, in async_wrapper
    |     result = await func(*args, **kwargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\request_handlers\default_request_handler.py", line 115, in _run_event_stream
    |     queue.close()
    |   File "D:\project\a2a_google\a2a-python\src\a2a\utils\telemetry.py", line 192, in sync_wrapper
    |     result = func(*args, **kwargs)
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "D:\project\a2a_google\a2a-python\src\a2a\server\events\event_queue.py", line 71, in close
    |     self.queue.shutdown()
    |     ^^^^^^^^^^^^^^^^^^^
    | AttributeError: 'Queue' object has no attribute 'shutdown'
    +------------------------------------

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions