Thanks to visit codestin.com
Credit goes to github.com

Skip to content

429 not being restarted for stream requests #1195

@ghost

Description

Long story short

Hi, I am not sure if I am not sure if this is an actual bug or if I am missing something.

I am getting the error you can check in the logs section.

In my mind, as this goes through the check_response and is identified as a APIClientError, this should be caught by the retry logic and try again after some backoff, as it would make sense for a 429.

Is the retry mechanism missing this, or did I get something wrong?

If there is an actual bug, I would be happy to contribute.

Kopf version

1.38.0

Kubernetes version

1.33.5

Python version

3.9

Code

Logs

log:{"message": "Watcher for signalslistenerapplications.v1.crd.ibm.io@epm-kitt has failed: (None, None)", "exc_info": "Traceback (most recent call last):
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/errors.py\", line 148, in check_response
response.raise_for_status()
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/aiohttp/client_reqrep.py\", line 1161, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 429, message='Too Many Requests', url='https://172.21.0.1/apis/crd.ibm.io/v1/namespaces/epm-kitt/signalslistenerapplications?watch=true&resourceVersion=2122351345'

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

Traceback (most recent call last):
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/aiokits/aiotasks.py\", line 96, in guard
await coro
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_core/reactor/queueing.py\", line 175, in watcher
async for raw_event in stream:
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/watching.py\", line 86, in infinite_watch
async for raw_event in stream:
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/watching.py\", line 201, in continuous_watch
async for raw_input in stream:
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/watching.py\", line 266, in watch_objs
async for raw_input in api.stream(
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/api.py\", line 201, in stream
response = await request(
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/auth.py\", line 50, in wrapper
response = await fn(*args, **kwargs, context=context)
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/api.py\", line 85, in request
await errors.check_response(response) # but do not parse it!
File \"/opt/signals_listener/.venv/lib/python3.9/site-packages/kopf/_cogs/clients/errors.py\", line 150, in check_response
raise cls(payload, status=response.status) from e
kopf._cogs.clients.errors.APIClientError: (None, None)", "timestamp": "2025-11-12T14:20:13.031539+00:00", "severity": "error"}

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions