Support _request_timeout in dynamic client watch()

Open
#2,533 5 comments 0 reactions 1 assignee View on GitHub

@Polimixanos is already working on this.

Since Apr 23, 2026.

Assessment

This issue has not been assessed yet.

Description

kind/feature

Problem

When using the dynamic client’s watch() method:

api = self._client.resources.get(
    api_version=self._api_version,
    kind=self._kind
)

for event in api.watch(
    timeout=server_timeout_seconds,
)

there is currently no way to configure a client-side request timeout (_request_timeout).

Current Workaround

To enforce a client-side timeout, we have to bypass Resource.watch() and directly use Watch().stream():

for raw_event in Watch().stream(
    api.get,
    serialize=False,
    deserialize=False,
    timeout_seconds=self._server_timeout_seconds,
    _request_timeout=self._client_timeout_seconds,
)

Issue

The dynamic client’s watch() method internally relies on Watch().stream() but does not expose _request_timeout as a parameter: https://github.com/kubernetes-client/python/blob/master/kubernetes/base/dynamic/client.py#L203

This creates:
Inconsistent API ergonomics
Unnecessary duplication of logic for users needing client-side timeouts

Proposed Solution

Extend Resource.watch() to accept an optional _request_timeout parameter and pass it through to the underlying Watch().stream() call.

Example:

api.watch(
    timeout=server_timeout_seconds,
    _request_timeout=(connect_timeout, read_timeout),
)
Dominant language
Python
Stars
7.7k
Forks
3.5k
Avg merge
1d 14h
Merged PRs (30d)
18

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from kubernetes-client/python

All issues in kubernetes-client/python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.